<?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>201059</bug_id>
          
          <creation_ts>2019-08-22 17:33:02 -0700</creation_ts>
          <short_desc>All image drawing functions should take an argument of type ImagePaintingOptions</short_desc>
          <delta_ts>2019-08-28 13:23:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201123</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564332</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-22 17:33:02 -0700</bug_when>
    <thetext>1) Pass ImagePaintingOptions to all the image drawing functions. Currently the top level drawing functions pass only some member of ImagePaintingOptions to lower level functions.
2) ImagePaintingOptions should be initialized with any number of the options and the order options should not matter. Currently it is hard to get the right set of constructors of ImagePaintingOptions because some callers prefers to pass few options and have the rest of options fall back to the default values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564336</commentid>
    <comment_count>1</comment_count>
      <attachid>377083</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-22 17:52:37 -0700</bug_when>
    <thetext>Created attachment 377083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564345</commentid>
    <comment_count>2</comment_count>
      <attachid>377087</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-22 18:26:07 -0700</bug_when>
    <thetext>Created attachment 377087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564354</commentid>
    <comment_count>3</comment_count>
      <attachid>377089</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-22 19:00:55 -0700</bug_when>
    <thetext>Created attachment 377089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564355</commentid>
    <comment_count>4</comment_count>
      <attachid>377090</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-22 19:06:43 -0700</bug_when>
    <thetext>Created attachment 377090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564392</commentid>
    <comment_count>5</comment_count>
      <attachid>377107</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 00:32:12 -0700</bug_when>
    <thetext>Created attachment 377107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564394</commentid>
    <comment_count>6</comment_count>
      <attachid>377108</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 00:48:42 -0700</bug_when>
    <thetext>Created attachment 377108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564402</commentid>
    <comment_count>7</comment_count>
      <attachid>377112</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 01:10:47 -0700</bug_when>
    <thetext>Created attachment 377112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564406</commentid>
    <comment_count>8</comment_count>
      <attachid>377115</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 01:29:08 -0700</bug_when>
    <thetext>Created attachment 377115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564407</commentid>
    <comment_count>9</comment_count>
      <attachid>377116</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 01:34:33 -0700</bug_when>
    <thetext>Created attachment 377116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564481</commentid>
    <comment_count>10</comment_count>
      <attachid>377131</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 09:52:09 -0700</bug_when>
    <thetext>Created attachment 377131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564592</commentid>
    <comment_count>11</comment_count>
      <attachid>377153</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-23 14:10:56 -0700</bug_when>
    <thetext>Created attachment 377153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565171</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-26 16:53:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/54728479&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565422</commentid>
    <comment_count>13</comment_count>
      <attachid>377357</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-27 11:20:24 -0700</bug_when>
    <thetext>Created attachment 377357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565812</commentid>
    <comment_count>14</comment_count>
      <attachid>377466</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-08-28 11:47:19 -0700</bug_when>
    <thetext>Created attachment 377466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565843</commentid>
    <comment_count>15</comment_count>
      <attachid>377466</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-28 13:23:46 -0700</bug_when>
    <thetext>Comment on attachment 377466
Patch

Clearing flags on attachment: 377466

Committed r249217: &lt;https://trac.webkit.org/changeset/249217&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1565844</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-28 13:23:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377083</attachid>
            <date>2019-08-22 17:52:37 -0700</date>
            <delta_ts>2019-08-22 18:26:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190822175237.patch</filename>
            <type>text/plain</type>
            <size>122643</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1MCBAQAorMjAxOS0wOC0yMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBpbWFn
ZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIEltYWdl
UGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdpbmcg
ZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1hZ2VQ
YWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4KKwor
ICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Ygb3B0
aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJlciBv
ZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0gSW1h
Z2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUoKSBh
bmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVycmlk
ZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFn
ZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0SW50
ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpjb21w
dXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25z
dW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25z
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OkltYWdl
UGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Ojpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpEcmF3
UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OmFw
cGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0
dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVy
bjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJ
bWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNo
b3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90
dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
SW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxz
YWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIG1heSBoYXBwZW4gd2hlbiBh
biBTVkcgPGZlSW1hZ2U+IGVsZW1lbnQgcmVmZXJlbmNlcyB0aGUgcm9vdCA8c3ZnPiBlbGVtZW50
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwODQsNiArMjA4NCw3IEBA
CiAJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0
MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVy
dHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjI4M0YwRTIzMEIyNjhD
MDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMz
MDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1
MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFj
dGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MTcs
NiArOTQxOCw3IEBACiAJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JH
Qi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdC
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdP
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUGFpbnRpbmdPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNS
R0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdCLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1NjJB
IC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVHNS
R0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEOUYxQTM5MDRDMzAwMDE0
RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFWFRGcmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1
NTMsNiArMjQ1NTUsNyBAQAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZy
YW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIu
aCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5o
ICovLAorCQkJCTcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9u
cy5oICovLAogCQkJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01v
ZGUuaCAqLywKIAkJCQk1NTQ2NzU3NzFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3Bw
ICovLAogCQkJCTU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLApA
QCAtMjk1NjksNiArMjk1NzIsNyBAQAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJ
bWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgx
IC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUE1OTMxMTUyNTI1RDAw
MDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjI4M0Yw
RTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUI1MUEyRjNGMTdEN0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VS
ZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdG
RjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMywxMCArMzIz
LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeAogICAgIH0KIAog
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVh
bGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVs
ZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29u
dGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5n
bGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVR
dWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyA3LiBDcmVhdGUgYSBu
ZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RG
TW92ZShiaXRtYXBEYXRhKSk7CkBAIC0zNzMsMTAgKzM3MCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZVByb21pc2UoU2NyaXB0RXgKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3Qo
RmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWlu
dGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkg
PSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFs
aXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWlu
dGluZ09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdl
Rm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1
YWxpdHkpIH0pOwogCiAgICAgLy8gMy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4K
ICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAt
NDg0LDEwICs0NzgsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4
CiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigp
LT5jb3B5SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91
dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAg
ICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25R
dWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7Cisg
ICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RS
ZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlv
blF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAg
ICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VC
aXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBA
IHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRS
ZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9s
YXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdl
KCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwg
cGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCpp
bWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5
KSB9KTsKIAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRh
KSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU3NCwxNyArMTU3NCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigq
aW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsKIAogICAgIGlm
IChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRy
YXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2Uo
KmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5k
TW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
aXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBv
c2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1Jl
Y3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAo
b3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICBj
LT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0lt
YWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCB7IG9wLCBi
bGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFs
aXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAg
ICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNS
ZWN0LCB7IG9wLCBibGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXplZERzdFJl
Y3QpOwogICAgIH0KICAgICAKQEAgLTE2MzIsNyArMTYzMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICNlbmRpZgogCiAgICAgaWYgKHJlY3RDb250YWluc0Nh
bnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpi
dWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9
IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRz
dFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2
NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAg
ICBpZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7CiAgICAgICAgICAgICBpZiAo
YXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIENvbG9yU3BhY2VT
UkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAgICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6
ZSgpIH0sIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpj
b3B5LCBkc3RSZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgeyBzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgICAgICBjLT5kcmF3
SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAg
ICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0
YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogICAgICAgICB9
CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBj
LT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsg
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAg
IGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogCkBAIC0xNzMwLDE3ICsxNzMwLDE3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICBjaGVja09yaWdpbigmaW1h
Z2VCaXRtYXApOwogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAg
ICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxl
bmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1Jl
Y3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZh
c0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxD
YW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRl
KCkuZ2xvYmFsQ29tcG9zaXRlKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAg
IH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkgewog
ICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZl
ciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUs
IHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVj
dCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUs
IHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZm
ZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogCkBAIC0x
ODI5LDE0ICsxODI5LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y29t
cG8KICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4
dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0
aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBkZXN0LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwg
ZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0
KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VC
dWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywg
b3ApOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMs
IG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ28KICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRyYW5zZm9ybWVk
QWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0
ZShjcm9wcGVkT2Zmc2V0KTsKICAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRDVE0oZWZmZWN0
aXZlVHJhbnNmb3JtKTsKLSAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29u
dGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgZHJh
d0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBz
cmMsIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9KTsKIAogICAgIGNvbXBvc2l0ZUJ1ZmZlcigqYnVm
ZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0
YUNoYW5nCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkOwogICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogfQotICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJh
bWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVz
KQogewogICAgIC8vIFdoZW4gbmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVj
b2RpbmdTdGF0dXMgaXMgc2V0IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyAr
MTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAot
SW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVj
dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CkBAIC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaQogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1
YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40ZiwgJS40Zild
IiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3Rv
ckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdodCgpKTsKIAog
ICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotICAgIGlmIChkZWNvZGluZ01vZGUgPT0gRGVjb2Rp
bmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAgICBpZiAob3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9
PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAgICAgICBBU1NFUlQoIWNhbkFuaW1h
dGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9hbmltYXRpb25GaW5p
c2hlZCk7CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6
OmRyYXcoR3JhcGhpCiAKICAgICAgICAgaWYgKCFmcmFtZUhhc0RlY29kZWROYXRpdmVJbWFnZUNv
bXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNh
bXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykp
KSB7CiAgICAgICAgICAgICBpZiAobV9zaG93RGVidWdCYWNrZ3JvdW5kKQotICAgICAgICAgICAg
ICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6Onll
bGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOworICAgICAgICAgICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JX
aXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgQVNTRVJUX0lNUExJRVMo
c3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJl
bnRGcmFtZSAmJiAhbV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0
aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVs
KSk7CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2Rp
bmdBY3RpdmUgJiYgbV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0
aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9y
V2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250
ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwg
b3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICB9IGVsc2UgaWYgKGZyYW1lSXNCZWlu
Z0RlY29kZWQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIHNob3dpbmcgdGhl
IHllbGxvdyByZWN0YW5nbGUgYW5kIHJldHVybmluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoaXMg
ZnJhbWUgdG8gZmluaXNoIGRlY29kaW5nLgogICAgICAgICAgICAgaWYgKG1fc2hvd0RlYnVnQmFj
a2dyb3VuZCkgewotICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBk
ZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOwor
ICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29s
b3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVP
cGVyYXRvcigpKTsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVz
IC0gJXAgLSB1cmw6ICVzIFt3YWl0aW5nIGZvciBhc3luYyBkZWNvZGluZyB0byBmaW5pc2hdIiwg
X19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJl
cXVlc3REZWNvZGluZzsKQEAgLTI2NCwxNCArMjY0LDE1IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICBBU1NFUlQoaW1hZ2UpOwogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7
CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkK
LSAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRG
cmFtZSk7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UpCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgeyBvcHRpb25zLCBmcmFtZU9yaWVudGF0
aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSkgfSk7CisgICAgZWxzZQorICAgICAgICBkcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUo
KSksIG9wdGlvbnMpOwogCi0gICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0
UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOwog
ICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJ
bmRleChtX2N1cnJlbnRGcmFtZSk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAtMjgw
LDcgKzI4MSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9z
b3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAg
IEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRl
cm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cHRpb25zKTsKICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVj
b2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBk
b24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlz
IHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAg
IGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7Cisg
ICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgeyBvcHRp
b25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH0p
OwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXIt
PmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3
THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4
dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxl
bmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29s
IEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24gMjQ5MDMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFs
bHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRl
c3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVy
cmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJj
ZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTAsMjAgKzUwLDIxIEBAIHN0YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVT
dWJpbWFnZShHcmFwaGkKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNT
VkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwotICAgIAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9
IG9wZXJhdGlvbjsKKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBp
ZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxh
eWVyKG9wYWNpdHkpOwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxw
aGEob3BhY2l0eSk7CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAog
ICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0
YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJ
bnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBp
ZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5
TGF5ZXIoKTsKQEAgLTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3Q3Jvc3NmCiAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi1J
bWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVy
YXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsK
ICAgICBjb250ZXh0LmNsaXAoZHN0UmVjdCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVj
dC5sb2NhdGlvbigpKTsKICAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkp
CkBAIC0xMDAsNyArMTAxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOgogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcgogICAgIGRyYXdDcm9zc2ZhZGUoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIC8v
IFRpbGUgdGhlIGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgotICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2VCdWZm
ZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2UuaAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcs
OCBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwog
CiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRv
SW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTcwLDEwICsxNzAsMTAgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3Rv
bVBhaW50SW1hZ2U6OmRvQ3VzdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3Rh
dGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQu
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9u
cy5ibGVuZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVz
dENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVj
dC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoRwogfQogCiB2b2lkIEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFs
ZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRT
aXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEN1c3Rv
bVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoCiAgICAgaWYgKGRlc3RDb250ZXh0LmRyYXdM
dW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygp
OwogCi0gICAgYnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRl
T3AsIGJsZW5kTW9kZSk7CisgICAgYnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiAgICAgZGVzdENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2Up
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWlu
dEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDggKzUyLDggQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3RvbVBhaW50
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29k
aW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAg
IFdlYWtQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4gbV9wYWlu
dERlZmluaXRpb247CiAgICAgVmVjdG9yPFN0cmluZz4gbV9pbnB1dFByb3BlcnRpZXM7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdl
LmgJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVl
KSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pIG92ZXJyaWRlID0gMDsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAg
ICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
b3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgb3ZlcnJpZGUgPSAwOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJl
IGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAy
NDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIEdyYWRpZW50SW1hZ2U6Okdy
YWRpZW50SW1hZ2UoR3JhZGllbnQmIGcKIAogR3JhZGllbnRJbWFnZTo6fkdyYWRpZW50SW1hZ2Uo
KSA9IGRlZmF1bHQ7CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJh
d1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0
aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAg
ZGVzdENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0
UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC01Myw3ICs1Myw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXAKIH0KIAogdm9pZCBHcmFkaWVudEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHktZXF1aXZhbGVu
dCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIEZsb2F0U2l6
ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgR3JhZGllbnRJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5h
bmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUg
Y29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2lu
ZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRl
cm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVy
bkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHJldmlzaW9uIDI0
OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEdyYWRpZW50SW1hZ2UoR3JhZGllbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
LCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFs
OworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
CiAgICAgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOwogICAgIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTUsNTUgKzcx
NSw1MCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hCiAKIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0
UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UK
ICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5k
aWYKLSAgICAgICAgCiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNy
Y1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1h
Z2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0
dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFn
ZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
b3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJj
ZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZElt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5k
cmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1Rp
bGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBv
cHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRl
cnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25R
dWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90
aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxl
ZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5k
cmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9y
LCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJl
dGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVz
dCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlv
biwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1h
Z2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIElu
dGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNT
Y29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7
Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29t
cG9zaXRlT3BlcmF0b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlv
biwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3Np
dGVPcGVyYXRvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMg
Kzc3MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltCiAgICAg
ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBpbWFnZS5kcmF3KCp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0
ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGltYWdlLmRyYXco
KnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC04MDEsMTMgKzc5NiwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlCiAgICAgZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2UpLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlTG9naWNhbFNpemUpKSwgaW1hZ2VQYWludGluZ09w
dGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAg
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRp
b25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIEltYWdlQnVmZmVyOjpkcmF3Q29uc3Vt
aW5nKFdURk1vdmUoaW1hZ2UpLCAqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYgcmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTIxMCw0MyArMjEx
LDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgogfTsKIAotc3RydWN0
IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5k
TW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5n
TW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRl
cnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAgICAgICA6IG1fY29t
cG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwgbV9ibGVuZE1vZGUo
YmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAg
ICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1faW50ZXJwb2xhdGlv
blF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0KLQotICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRp
b25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVj
b2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBv
c2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJs
ZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAg
ICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25R
dWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0KLSAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVj
b2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBv
c2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJs
ZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAg
ICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25R
dWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ludGVycG9sYXRp
b25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBDb21wb3NpdGVPcGVy
YXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSAg
ICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29y
aWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxp
dHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyArMzExLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJ
Uk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICNlbmRpZgogCiAj
aWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwyMiBAQCBwdWJsaWM6
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRp
bmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0KLSAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAotICAgICAg
ICBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9u
cygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotCi0g
ICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKLQotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZv
aWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OworCisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0
IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCShyZXZpc2lvbiAyNDkw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjcgKzM3LDI3IEBAIEdyYXBoaWNzQ29udGV4
dEltcGw6On5HcmFwaGljc0NvbnRleHRJbXAKIHsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dEltcGw6OmRyYXdJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlv
bnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhdyhjb250
ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0
ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRp
b24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkp
OworICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9w
dGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1Rp
bGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRp
b25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2Nv
bXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3Jp
ZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFs
aXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQg
R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0
Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0
IGRvIGEgc2NhbGUuCi0gICAgICAgIHJldHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRleHQsIGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJl
dHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRleHQsIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKICAgICB9CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChj
b250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVs
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CisgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3Bl
KGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGlt
YWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNpb24gMjQ5MDMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSAwOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDMyICsxMzgsMjggQEAgdm9pZCBJ
bWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQwogfQogCiB2b2lkIEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAg
ICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRl
cm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RS
ZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5k
aWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9p
bnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3Ig
Y29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgp
KSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9w
KTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0
aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkRHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RT
b2xpZENvbG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUg
aW50cmluc2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXpl
IGludHJpbnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZl
V2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNp
emUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgw
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICB2
aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2Nh
bGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53
aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdo
dChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJuIGRy
YXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3Qs
IHZpc2libGVTcmNSZWN0LCBvcHRpb25zKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtMTk2LDcgKzE5Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAt
IG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRXaWR0aCgxKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdo
dChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHJldHVy
biBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5v
cm1hbCB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYg
aW50ZXJzZWN0aW9uKG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53
aWR0aCgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CkBAIC0yMDQs
NyArMjAwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgICAgICBGbG9hdFJl
Y3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVjdC5sb2NhdGlvbigpIC0gb25l
VGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5zaXplKCkpOwogICAgICAgICAg
ICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgpLCAxIC8gc2NhbGUuaGVpZ2h0
KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21S
ZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgeyBv
cHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJyZW50VGlsZVJl
Y3Qud2lkdGgoKTsKQEAgLTI1MCwxNyArMjQ2LDE3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWMKIAogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3Jt
ID0gQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCksIHNjYWxl
LmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgdGlsZVJlY3QoRmxvYXRQb2ludCgpLCBpbnRyaW5z
aWNUaWxlU2l6ZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBvbmVUaWxlUmVjdC5sb2NhdGlvbigpLCBzcGFjaW5nLCBvcCwgYmxl
bmRNb2RlKTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wdGlvbnMpOwog
ICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJh
dzsKIH0KIAogLy8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVh
bGx5LCBzaW5jZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3Mu
Ci1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZS
dWxlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1Rp
bGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBU
aWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogeyAgICAKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xv
cigpOwogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENv
bG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjdHh0LCBkc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAgICAgCkBAIC0z
MzAsMTggKzMyNiwxNCBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQp
IC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNl
LCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcCk7Cisg
ICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlvbigpOwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1hZ2U6OmNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYg
aW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUoKTsKLSNl
bHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRyaW5zaWNX
aWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAgaW50cmlu
c2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDI0
OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRo
aXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMg
ZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAg
LTExNiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhv
dFNwb3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRh
U3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29s
IC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3du
OyB9CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYq
IGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlOjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wg
bm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90
ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYK
LSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsK
LSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVy
YXRvcik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGls
ZWQgZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gQ29sb3IoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIklt
YWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJh
eS5oPgpAQCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdT
dG9yZUNvcHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50
IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAv
LyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1Miwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAg
ICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSks
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxl
bmRNb2RlOjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAg
ICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsK
KyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRU
b0x1bWluYW5jZU1hc2soKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5n
T3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRp
bmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0aW9ucykKKyAgICB7CisgICAgICAgIHNldE9w
dGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVy
cnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVycnJpZGVzKQorICAgICAgICA6IEltYWdlUGFp
bnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMu
Li4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZh
dWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7
IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5n
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RpbmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3Qg
Zmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihmaXJzdCk7Cisg
ICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9y
ID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxl
bmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRNb2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24o
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBtX2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9k
ZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsg
bV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VP
cmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9y
aWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRp
b25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9y
IHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJs
ZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRh
dGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmUKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQog
Ci1JbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpIHx8
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgY29u
dGV4dC5jbGlwKGRzdFJlY3QpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QubG9jYXRp
b24oKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtNjMs
NyArNjMsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlCiAjZW5k
aWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQpOwpA
QCAtNzQsMTYgKzc0LDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGUKICAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGlj
c0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgp
KSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAg
ICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwor
ICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5V
U0VEX1BBUkFNKHNyY1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsK
ICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAg
ICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsK
LSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7
CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0OTAz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92
ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3QgRmxvYXRTaXplJik7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkocmV2aXNpb24g
MjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2lu
Y2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgpAQCAtNjYsNyArNjYsNyBAQCBJbnRTaXplIG5hdGl2ZUltYWdlU2l6
ZShjb25zdCBOYXRpdmVJbWFnCiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24pOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIHZvaWQgY2xlYXJO
YXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRU
b0NhbnZhcyhjbwogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29u
dGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVDb3B5IH0pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNDkw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGEKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNl
VHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRp
b24pOworICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTI4OCw3ICsyODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNv
CiAjZW5kaWYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2UpOwogCi0g
ICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBD
R0ltYWdlR2V0V2lkdGgoc3ViSW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFn
ZS5nZXQoKSk7CisgICAgZmxvYXQgY3VyckhlaWdodCA9IG9wdGlvbnMub3JpZW50YXRpb24oKS51
c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENH
SW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOwogICAgIGlmIChjdXJySGVpZ2h0IDw9IHNy
Y1JlY3QueSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1OCwxNSArMzU4LDE1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY28KICAgICBhZGp1c3RlZERlc3RSZWN0
ID0gcm91bmRUb0RldmljZVBpeGVscyhhZGp1c3RlZERlc3RSZWN0KTsKICNlbmRpZgogCi0gICAg
c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisgICAgc2V0UGxh
dGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRp
b25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUg
b3JpZ2luIHRvIGJlIGF0ICgwLCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0
LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGFkanVz
dGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRh
dGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIENHQ29udGV4dENvbmNh
dENUTShjb250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWln
aHQoKSkgeworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlv
bjo6Tm9uZSkgeworICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3B0aW9ucy5v
cmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgp
KSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQo
KSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mg
d2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YK
ICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlv
dXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBhZGp1
c3RlZERlc3RSZWN0ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERl
c3RSZWN0LnkoKSwgYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSwgYWRqdXN0ZWREZXN0UmVjdC53
aWR0aCgpKTsKQEAgLTQwOCwxMyArNDA4LDEzIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNl
Q2FsbGJhY2sodm9pZCoKICAgICB9KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdQ
YXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihp
bWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAgICAgQ0dDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3Qo
Y29udGV4dCwgZGVzdFJlY3QpOwogCi0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24o
b3AsIGJsZW5kTW9kZSk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3B0aW9u
cy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIENHQ29u
dGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSArIGRl
c3RSZWN0LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7
CkBAIC00MzksMTEgKzQzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJ
bWFnZSYKICAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwog
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwot
I2Vsc2UKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAg
ICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0g
dGlsZUltYWdlOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDI0OTAzMikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTEgKzMzNCwxMSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gSW1hZ2VCdWZmZXI6OmNvcHlOCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi12b2lkIEltYWdl
QnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKElP
U1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBpZiAoIWltYWdlQnVmZmVyLT5tX2Rh
dGEuc3VyZmFjZSkgewotICAgICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBpbWFnZUJ1ZmZlci0+ZHJh
dyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApAQCAtMzUxLDEzICszNTEsMTMgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6
ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaQogICAgIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1Jl
Y3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUp
OwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgYmFja2luZ1N0
b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXpl
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNlCi0gICAgaW1hZ2VC
dWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
KTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RD
b250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2NywxMCBAQCB2b2lk
IEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgCiAKICAgICBGbG9hdFJlY3QgYWRq
dXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
LCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
RmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0
LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICBpZiAoIWNvbnRleHQoKS5pc0Fj
Y2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRl
eHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAg
ICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAv
LyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9k
ZSk7CisgICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cHRpb25zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+
IGltYWdlRm9yUmVuZGVyaW5nID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAg
ICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+
ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJh
Y2tpbmdTdG9yZSkpCi0gICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lv
biAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBDb2xvciBuYXRpdmVJ
bWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vi
c2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4g
c2l6ZSgpLgogICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHQKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAg
ICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNy
Y1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3Qs
IGFkanVzdGVkU3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdl
cyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2
aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlCiAgICAgZGVjb2RlZFNpemVDaGFu
Z2VkKGludGVybmFsU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0KTsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQor
SW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2Rv
Y3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CkBAIC0yNjYsNyArMjY2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50
SW1hZ2U6OmRyYXcoRwogCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikg
ewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZm
ZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJp
bnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNS
YXRpbykgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRv
IGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3Bh
cXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0KIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAj
aWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWly
by4KQEAgLTQ5NiwxMSArNDk2LDcgQEAgRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTgogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlv
bihkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQotI2lmIFVTRShDRykKLSAgICAs
IG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0jZW5kaWYKLSAgICAsIG1f
b3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKICNp
ZiAhVVNFKENHKQogICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7CkBAIC01MTIsNyArNTA4LDcgQEAg
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTgogdm9pZCBEcmF3TmF0aXZl
SW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0Uo
Q0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1f
ZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24p
OworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rl
c3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICNlbmRpZgpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0KIH0KICNlbmRpZgogCi1EcmF3UGF0dGVybjo6RHJhd1Bh
dHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorRHJhd1BhdHRlcm46OkRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3UGF0dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3BhdHRlcm5U
cmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSkKQEAgLTUzNiwxNCArNTMyLDEzIEBAIERyYXdQYXR0
ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGMKICAgICAsIG1fZGVzdGluYXRpb24oZGVz
dFJlY3QpCiAgICAgLCBtX3BoYXNlKHBoYXNlKQogICAgICwgbV9zcGFjaW5nKHNwYWNpbmcpCi0g
ICAgLCBtX29wKG9wKQotICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICwgbV9vcHRp
b25zKG9wdGlvbnMpCiB7CiB9CiAKIHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1faW1hZ2Uu
Z2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9ybSwgbV9w
aGFzZSwgbV9zcGFjaW5nLCBtX29wLCBtX2JsZW5kTW9kZSk7CisgICAgY29udGV4dC5kcmF3UGF0
dGVybihtX2ltYWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5U
cmFuc2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcHRpb25zKTsKIH0KIAogc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBp
dGVtKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNDkw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsMTYgKzY0MSwxNiBAQCBwcml2
YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBE
cmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVm
PERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAg
IEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9h
dFJlY3QgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKIHBy
aXZhdGU6Ci0gICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02NjIsMTkg
KzY2MiwxNSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwotI2lmIFVTRShD
RykKLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX29wOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9k
ZTsKLSNlbmRpZgotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogI2VuZGlmCiAKIGNsYXNzIERyYXdQYXR0
ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdQ
YXR0ZXJuPiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIHN0YXRp
YyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5k
TW9kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0
aW9ucykpOwogICAgIH0KIAogICAgIGNvbnN0IEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW1hZ2UuZ2V0KCk7IH0KQEAgLTY4NSw3ICs2ODEsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRT
aXplIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmc7IH0KIAogcHJpdmF0ZToKLSAg
ICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5Nyw4ICs2
OTMsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0
UG9pbnQgbV9waGFzZTsKICAgICBGbG9hdFNpemUgbV9zcGFjaW5nOwotICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIG1fb3A7Ci0gICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKIC8vIElzIERyYXdpbmdJdGVtIGJlY2F1c2UgdGhl
IHNpemUgb2YgdGhlIHRyYW5zcGFyZW5jeSBsYXllciBpcyBpbXBsaWNpdGx5IHRoZSBjbGlwIGJv
dW5kcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHJl
dmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE2
ICsxMjcsMTYgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZQogfQog
CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQgUmVjb3Jk
ZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0
ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZl
SW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3du
Y2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFn
ZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJ
dGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogI2VuZGlmCiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3
SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdQYXR0ZXJuOjpjcmVh
dGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wLCBibGVuZE1vZGUpKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3du
Y2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGltYWdlLCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCBwcml2YXRlOgogICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lk
IGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRl
OworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3
TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3
IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJh
d2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9z
aXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSksIHsgQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcwLDggKzI3MCw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgK
ICAgICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVj
dCAtIGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3Vy
Y2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRp
b24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGlu
Mi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwg
c291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVT
b3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3Vy
Y2UyUmVjdCkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3Vy
Y2VSZWN0KSwgeyBDb21wb3NpdGVTb3VyY2VJbiB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24gMjQ5
MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODUsMTUg
Kzg4NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhCiAgICAg
aWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwot
ICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCiAgICAgYXV0
byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7
CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5kcmF3
SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5n
T3B0aW9ucyk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3Qs
IGdzdEltYWdlLT5yZWN0KCksIHsgQ29tcG9zaXRlQ29weSwgbV9yZW5kZXJpbmdDYW5CZUFjY2Vs
ZXJhdGVkID8gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uIDogSW1hZ2VPcmllbnRhdGlvbigpIH0p
OwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYs
NyArOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltCiAgICAg
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQpOwog
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAgICAgICAg
Y29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VTY2FsZSB9
KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgRmxvYXRQb2ludCgpLCB7IG9yaWVudGF0aW9uIH0pOwogICAgIH1dOwogICAgIHJl
dHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWUKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50
ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGls
ZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZv
ckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1
bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwg
dG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6
ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29u
dGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0
UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2Vv
bWV0cnkuc3BhY2VTaXplKCksIHsgY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRl
Y29kaW5nTW9kZSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0
ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJ
bWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRo
aXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQsNyArMjI0
LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3Nl
SW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJlY3Qu
c2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9u
KCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAko
cmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7
CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBs
ZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIgKyB0
b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwogCi0gICAgICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50
T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgeyBp
bWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24g
PSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzIsNyArNjMyLDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFn
ZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICBhdXRvIGRl
Y29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7
Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
ZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlv
bikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdl
KCppbWcsIHJlY3QsIHsgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNv
ZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICBpZiAo
ZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAg
ICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3lu
Y0RlY29kaW5nKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6cGFpbnRTbmFwcwogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmlt
YWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9u
KCksIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWdu
ZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAogQ3Vy
c29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjQ5MDMy
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNu
YXBzaG90dGVkUGx1CiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBh
bGlnbmVkUGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25l
ZFBsdWdpblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NyArMTc4LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB9CiAK
IEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWlu
ZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAg
LTIwMiw3ICsyMDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWlu
CiAKICAgICBmcmFtZVZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVudChpbml0aWFsRnJhZ21lbnRVUkwp
OwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwg
c2NhbGVkU3JjLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0
ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIG9wdGlvbnMpOwogCiAgICAgc2V0
SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsy
MjEsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYg
KCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQo
KSwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcpOiBXZSBz
aG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1ZmZlci0+
Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWdlKGNvbgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHBsYXRmb3JtQ29udGV4dChuYXRp
dmVJbWFnZVRhcmdldC5nZXQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgm
cGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRU
eXBlOjpHUFVNZW1vcnkpOwogCi0gICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgp
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhsb2NhbENvbnRl
eHQsIHJlY3QoKSwgcmVjdCgpKTsKIAogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KICNlbmRp
ZgogCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZShj
b250YWluZXJab29tKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0
dGVybkZvckNvbnRhaW5lcihHCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
aW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsKICAg
ICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0
dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNp
emUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6
b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1h
bCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6
ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpv
b21lZENvbnRhaW5lclJlY3QpOwogICAgIGlmIChjb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkp
CiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCkBAIC0yODYsMTAg
KzI4NiwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAg
dW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRo
KCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJh
d0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBk
c3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+ZHJhd1BhdHRlcm4o
Y29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQor
SW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjk4LDExICsyOTgs
MTEgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQwogICAgIEFTU0VS
VCh2aWV3KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChl
bmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAogICAgIGZsb2F0IGFscGhhID0gY29udGV4dC5h
bHBoYSgpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0g
Y29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRN
b2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOworICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1Ry
YW5zcGFyZW5jeUxheWVyID0gb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpICE9IENvbXBvc2l0
ZVNvdXJjZU92ZXIgfHwgb3B0aW9ucy5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8
fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXll
cikgewogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwogICAg
ICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGU6Ok5vcm1hbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuaAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEwICs5NCw5IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIGV4cGxpY2l0IFNWR0ltYWdl
KEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVy
Wm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29u
c3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVj
dCYsIEJsZW5kTW9kZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNv
bnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdt
ZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdQYXR0
ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFp
bmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRV
UkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIFJlZlB0
cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHJl
dmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2ICszNCwxNSBAQCBGbG9hdFNp
emUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjCiAgICAgcmV0dXJuIEZsb2F0U2l6ZShy
b3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250
YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29u
dGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50
VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICByZXR1
cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1f
Y29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
Ci0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9pbWFnZS0+ZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20s
IG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRh
aW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKIE5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAkocmV2aXNpb24gMjQ5MDMy
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdl
LT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVp
Z2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3du
VG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ5MDM2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOC0yMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBpbWFnZSBkcmF3aW5nIGZ1bmN0aW9u
cyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIEltYWdlUGFpbnRpbmdPcHRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwNTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSgpIG5vdyB0YWtlcyBhbiBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAxOS0wOC0yMiAgQW5keSBF
c3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29u
dGVudCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9u
IDI0OTAzMikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBzdGF0aWMgdm9pZCBp
bWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViCiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSks
IHJlbmRlckltYWdlLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRt
YXBTaXplLmhlaWdodCgpKSksIHsgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpIH0pOwog
ICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377087</attachid>
            <date>2019-08-22 18:26:07 -0700</date>
            <delta_ts>2019-08-22 19:00:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190822182606.patch</filename>
            <type>text/plain</type>
            <size>154445</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBAQAorMjAxOS0wOC0yMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBpbWFn
ZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIEltYWdl
UGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdpbmcg
ZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1hZ2VQ
YWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4KKwor
ICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Ygb3B0
aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJlciBv
ZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0gSW1h
Z2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUoKSBh
bmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVycmlk
ZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFn
ZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0SW50
ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpjb21w
dXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25z
dW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25z
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OkltYWdl
UGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Ojpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJv
OjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdT
aGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2
ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBw
bHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpE
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46
OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0
dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxl
bmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVj
dDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dElt
cGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFn
ZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpw
YWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBh
aW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWlu
dFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIG1heSBoYXBw
ZW4gd2hlbiBhbiBTVkcgPGZlSW1hZ2U+IGVsZW1lbnQgcmVmZXJlbmNlcyB0aGUgcm9vdCA8c3Zn
PiBlbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwODQsNiAr
MjA4NCw3IEBACiAJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2
MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyog
U1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjI4M0Yw
RTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdD
NyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJs
ZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9Owog
CQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkx
RkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0
ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9i
c2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTk0MTcsNiArOTQxOCw3IEBACiAJCTcyN0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTgg
LyogRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAv
KiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdl
UGFpbnRpbmdPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUGFpbnRpbmdPcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRDNTYyQSAv
KiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNF
WFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQy
RjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEOUYxQTM5
MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFWFRGcmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjQ1NTMsNiArMjQ1NTUsNyBAQAogCQkJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAv
KiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdl
T2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmll
bnRhdGlvbi5oICovLAorCQkJCTcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50
aW5nT3B0aW9ucy5oICovLAogCQkJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJl
bmRlcmluZ01vZGUuaCAqLywKIAkJCQk1NTQ2NzU3NzFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VT
b3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJj
ZS5oICovLApAQCAtMjk1NjksNiArMjk1NzIsNyBAQAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4
MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0
RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUE1OTMx
MTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI1MUEyRjNGMTdEN0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUg
LyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDI3QUU1MDIyQTk4
Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
MywxMCArMzIzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeAog
ICAgIH0KIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUp
OwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGlu
Z09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9y
UmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0
YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFw
RGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3Vy
Y2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyA3LiBD
cmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBj
cmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC0zNzMsMTAgKzM3MCw3IEBAIHZvaWQgSW1h
Z2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXgKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5y
ZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
YWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAgLy8gMy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFw
IG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0
YSkpOwpAQCAtNDg0LDEwICs0NzgsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNl
KFNjcmlwdEV4CiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAt
PmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBv
aW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0
aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwot
Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0
aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5k
ZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkg
fSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1
dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAg
KzY0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAg
ICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5t
X2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFs
aXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCku
ZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNp
emVRdWFsaXR5KSB9KTsKIAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShi
aXRtYXBEYXRhKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAyNDkw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3NCwxNyArMTU3NCwxNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIGRvd25jYXN0PEJpdG1h
cEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsK
IAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAg
ICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5k
cmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsg
b3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKICAgICAgICAgZnVsbENh
bnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFs
aXplZFNyY1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSBpZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwot
ICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAg
Yy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0
LCB7IG9wLCBibGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVj
dCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUp
KTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1h
bGl6ZWRTcmNSZWN0LCB7IG9wLCBibGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFs
aXplZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE2MzIsNyArMTYzMiw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICNlbmRpZgogCiAgICAgaWYgKHJlY3RD
b250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdl
QnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMo
KTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpi
dWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKQEAgLTE2
NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dAogICAgICAgICBpZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIENv
bG9yU3BhY2VTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAg
ICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNy
Y1JlY3Quc2l6ZSgpIH0sIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9z
aXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdl
QnVmZmVyKCpjb3B5LCBkc3RSZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgeyBzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQp
KTsKKyAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwog
ICAgICAgICB9CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNy
Y1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7
CiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogCkBAIC0xNzMwLDE3ICsxNzMwLDE3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQKICAgICBjaGVja09y
aWdpbigmaW1hZ2VCaXRtYXApOwogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0
KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCku
Z2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJl
Y3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxl
bmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlz
RnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAg
ICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1Jl
Y3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRl
Q29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJh
d0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVD
YW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZl
ciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxD
b21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUs
IHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAgICAg
fQogCkBAIC0xODI5LDE0ICsxODI5LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6Y29tcG8KICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFn
ZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Ig
b3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGNvbnRl
eHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFn
ZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdl
VG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZl
ciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRl
c3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBk
ZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZv
aWQgQ2FudmFzUmVuZGVyaW5nQ28KICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXRy
YW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIGJ1ZmZlci0+Y29udGV4dCgp
LnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0KTsKICAgICBidWZmZXItPmNvbnRleHQoKS5jb25jYXRD
VE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKLSAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1
ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0
ZWREZXN0LCBzcmMsIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9KTsKIAogICAgIGNvbXBvc2l0ZUJ1
ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkwMzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBCaXRtYXBJ
bWFnZTo6ZGF0YUNoYW5nCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29k
aW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0
YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQotICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRD
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29k
aW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4gbmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVu
dEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBA
IC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAj
ZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9k
ZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkg
fHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaQogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVy
bDogJXMgW3N1YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZvckRyYXdpbmcgPSAoJS40
ZiwgJS40ZildIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpLCBz
Y2FsZUZhY3RvckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLmhlaWdo
dCgpKTsKIAogICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotICAgIGlmIChkZWNvZGluZ01vZGUg
PT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAgICBpZiAob3B0aW9ucy5kZWNvZGlu
Z01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewogICAgICAgICBBU1NFUlQo
IWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50RnJhbWUgfHwgbV9hbmlt
YXRpb25GaW5pc2hlZCk7CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0
bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAKICAgICAgICAgaWYgKCFmcmFtZUhhc0RlY29kZWROYXRp
dmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3Vy
cmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhEZWNvZGluZ01vZGU6OkFzeW5j
aHJvbm91cykpKSB7CiAgICAgICAgICAgICBpZiAobV9zaG93RGVidWdCYWNrZ3JvdW5kKQotICAg
ICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3Io
Q29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOworICAgICAgICAgICAgICAg
IGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxv
dykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICAgICAgQVNTRVJU
X0lNUExJRVMoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwg
KCFtX2N1cnJlbnRGcmFtZSAmJiAhbV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1
bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSk7CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1
czo6RGVjb2RpbmdBY3RpdmUgJiYgbV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAg
ICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxs
b3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRD
b2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxw
aGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgICAgICB9IGVsc2UgaWYgKGZy
YW1lSXNCZWluZ0RlY29kZWQpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIHNo
b3dpbmcgdGhlIHllbGxvdyByZWN0YW5nbGUgYW5kIHJldHVybmluZyB3ZSBuZWVkIHRvIHdhaXQg
Zm9yIHRoaXMgZnJhbWUgdG8gZmluaXNoIGRlY29kaW5nLgogICAgICAgICAgICAgaWYgKG1fc2hv
d0RlYnVnQmFja2dyb3VuZCkgewotICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihj
b250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41
KSwgb3ApOworICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0
UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgICAgICBMT0coSW1hZ2VzLCAiQml0bWFw
SW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFt3YWl0aW5nIGZvciBhc3luYyBkZWNvZGluZyB0byBm
aW5pc2hdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZzsKQEAgLTI2NCwxNCArMjY0LDE1IEBAIEltYWdlRHJhd1Jl
c3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKICAgICBBU1NFUlQoaW1hZ2UpOwogICAgIENv
bG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFs
aWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIGNv
bG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgaWYgKG9yaWVudGF0aW9uID09IEltYWdlT3JpZW50YXRpb246OkZy
b21JbWFnZSkKLSAgICAgICAgb3JpZW50YXRpb24gPSBmcmFtZU9yaWVudGF0aW9uQXRJbmRleCht
X2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSA9PSBJbWFnZU9y
aWVudGF0aW9uOjpGcm9tSW1hZ2UpCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgeyBvcHRpb25zLCBmcmFt
ZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSkgfSk7CisgICAgZWxzZQorICAgICAg
ICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRT
aXplKHNpemUoKSksIG9wdGlvbnMpOwogCi0gICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250
ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCBvcCwgbW9kZSwgb3JpZW50
YXRpb24pOwogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5n
U3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigp
KQpAQCAtMjgwLDcgKzI4MSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxl
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgICAgIGlmIChtX2N1cnJl
bnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQogICAgICAg
ICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKICAgICAgICAg
Ci0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBJbWFnZTo6
ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2Vy
dmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1
ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxwdHIpOwog
Ci0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3As
IGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAg
ICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvCiAgICAgfQogCiAgICAgY3R4
dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBk
ZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwog
fQogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAkocmV2aXNpb24g
MjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8
ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2Fy
eShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjAgKzUwLDIxIEBAIHN0YXRpYyB2b2lkIGRyYXdD
cm9zc2ZhZGVTdWJpbWFnZShHcmFwaGkKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0g
aW1hZ2UuaXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKGNvbnRleHQpOwotICAgIAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9w
ZXJhdGlvbiA9IG9wZXJhdGlvbjsKKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7
CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5z
cGFyZW5jeUxheWVyKG9wYWNpdHkpOwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21w
b3NpdGVTb3VyY2VPdmVyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRl
eHQuc2V0QWxwaGEob3BhY2l0eSk7CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9Owor
ICAgIH0KIAogICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4
dC5zY2FsZSh0YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBJbnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRp
b24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7
CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJh
bnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3Q3Jvc3NmCiAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigp
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jl
c3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5k
TW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZHN0UmVjdCk7CiAgICAgY29udGV4dC50cmFuc2xh
dGUoZHN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVj
dC5zaXplKCkpCkBAIC0xMDAsNyArMTAxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdl
bmVyYXRlZEltYWdlOgogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAK
LXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcgogICAgIGRyYXdDcm9zc2ZhZGUoZ3JhcGhpY3NDb250ZXh0KTsK
IAogICAgIC8vIFRpbGUgdGhlIGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgotICAgIGlt
YWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAg
aW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92
ZXJyaWRlOwogCiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwg
SW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3Nm
YWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAy
NDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDEwICsxNzAsMTAgQEAgSW1hZ2VEcmF3UmVz
dWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdl
RHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVz
dENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3Io
KSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7
CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlm
IChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoRwogfQogCiB2b2lkIEN1c3Rv
bVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxs
eS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAg
ICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTIwNSw3ICsyMDUsNyBAQCB2
b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoCiAgICAgaWYgKGRlc3RDb250
ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5h
bmNlTWFzaygpOwogCi0gICAgYnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywg
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgYnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFz
ZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgZGVzdENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soZmFsc2UpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
dXN0b21QYWludEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1
c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKIAogICAgIFdlYWtQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlv
bj4gbV9wYWludERlZmluaXRpb247CiAgICAgVmVjdG9yPFN0cmluZz4gbV9pbnB1dFByb3BlcnRp
ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVy
YXRlZEltYWdlLmgJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxs
Ki8gPSB0cnVlKSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlID0gMDsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSkgb3ZlcnJpZGUgPSAwOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShy
ZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTAgKzM5LDEwIEBAIEdyYWRpZW50
SW1hZ2U6OkdyYWRpZW50SW1hZ2UoR3JhZGllbnQmIGcKIAogR3JhZGllbnRJbWFnZTo6fkdyYWRp
ZW50SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAg
ZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0
b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVj
dCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAg
IGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC01Myw3ICs1Myw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXAKIH0KIAogdm9pZCBHcmFk
aWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHkt
ZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAg
IEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQg
R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAgICBkZXN0Q29udGV4dC5zZXRE
cmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIg
aW50byB0aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFz
ZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+
ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVz
dGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgJKHJl
dmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEdyYWRpZW50SW1hZ2UoR3JhZGllbnQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAot
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgZmluYWw7CiAgICAgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0IGZpbmFsOwog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MTUsNTUgKzcxNSw1MCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
CiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkp
OwotI2Vsc2UKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUo
KSk7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGlu
YXRpb24sIHNyY1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAg
ICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRo
aXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJl
dHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4g
bV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNp
emUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1w
bC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBz
cGFjaW5nLCBvcHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVy
cG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1h
Z2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhS
dWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpU
aWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0
b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4g
bV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNj
YWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IElt
YWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAg
ICAgLy8gSnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVy
biBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0K
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRh
aW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRl
cnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9u
cy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBA
IC03NzYsMTMgKzc3MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVy
KEltCiAgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxTaXplKCkpKSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5n
T3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBpbWFn
ZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7Cisg
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGlt
YWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC04MDEsMTMg
Kzc5NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlCiAgICAg
ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2UpLCBkZXN0aW5hdGlvbiwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlTG9naWNhbFNpemUpKSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0
eSk7Ci0gICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0
aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIEltYWdlQnVmZmVyOjpk
cmF3Q29uc3VtaW5nKFdURk1vdmUoaW1hZ2UpLCAqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwg
b3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyNDkwMzIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNs
dWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNs
dWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTIx
MCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgogfTsK
IAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2Rl
IGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAgICAg
ICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwgbV9i
bGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9k
ZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1faW50
ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0KLQot
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRl
ZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAg
OiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxl
bmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUp
Ci0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVy
cG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9u
UXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246
Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAg
OiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxl
bmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUp
Ci0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVy
cG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lu
dGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBDb21w
b3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2JsZW5k
TW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmllbnRh
dGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xh
dGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ugewog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyArMzEx
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8
fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWws
IEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICNl
bmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwyMiBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJh
d1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IElt
YWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0KLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LAotICAgICAgICBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25z
KCkpOwotCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKLQotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFn
ZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
SW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OworICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworCisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCShyZXZp
c2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjcgKzM3LDI3IEBAIEdyYXBo
aWNzQ29udGV4dEltcGw6On5HcmFwaGljc0NvbnRleHRJbXAKIHsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0lt
YWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFp
bnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2Uu
ZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
b3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBvcHRpb25zLmludGVycG9sYXRpb25R
dWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1w
bDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQorSW1hZ2VE
cmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0
aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2lu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQs
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9k
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBvcHRpb25zLmludGVycG9s
YXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2Nh
bGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVG
YWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoaFJ1bGUgPT0gSW1h
Z2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewogICAgICAg
ICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJldHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRl
eHQsIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7Cisg
ICAgICAgIHJldHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRleHQsIGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCBvcHRpb25zKTsKICAgICB9CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRy
YXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhS
dWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7Cisg
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAg
cmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxl
U2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNpb24g
MjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw5ICs3Myw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVS
dWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgPSAwOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0g
ICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgPSAwOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlOjpOb3JtYWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVz
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDMyICsxMzgsMjgg
QEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQwogfQogCiB2b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQu
ZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3Iu
aXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBj
b2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2Uo
KSB8fCBub3RTb2xpZENvbG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBG
bG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAg
RmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhh
c1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2Nh
bGVkVGlsZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0x
ODQsNyArMTgwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwog
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55
KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChk
ZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAg
cmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
LCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwg
ZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcHRpb25zKTsKICAgICB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpAQCAtMTk2LDcgKzE5Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RS
ZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAg
ICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAg
ICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVu
ZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgp
ID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRpbGVSZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBk
ZXN0UmVjdC53aWR0aCgpKSB7CiAgICAgICAgICAgICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7
CkBAIC0yMDQsNyArMjAwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZp
c2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsK
ICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBk
cmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6
Ok5vcm1hbCB9KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAgICAgICAg
ICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVjdC5sb2NhdGlv
bigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgpLCAxIC8gc2Nh
bGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1Jl
Y3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJy
ZW50VGlsZVJlY3Qud2lkdGgoKTsKQEAgLTI1MCwxNyArMjQ2LDE3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKIAogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJu
VHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRo
KCksIHNjYWxlLmhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgdGlsZVJlY3QoRmxvYXRQb2ludCgp
LCBpbnRyaW5zaWNUaWxlU2l6ZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBvbmVUaWxlUmVjdC5sb2NhdGlvbigpLCBzcGFjaW5n
LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9w
dGlvbnMpOwogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkRHJhdzsKIH0KIAogLy8gRklYTUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxl
ZCBldmVudHVhbGx5LCBzaW5jZSB3ZSBuZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29t
ZSB0aGluZ3MuCi1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRp
bGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK0ltYWdlRHJhd1Jlc3VsdCBJbWFn
ZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxl
RmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogeyAgICAKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVs
U29saWRDb2xvcigpOwogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdp
dGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRo
U29saWRDb2xvcihjdHh0LCBkc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRv
cigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAg
ICAgCkBAIC0zMzAsMTggKzMyNiwxNCBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxl
ZChHcmFwaGljCiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRp
bGVIZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgp
IC0gaFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwg
ZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5n
LCBvcCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1h
dGlvbigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQg
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgs
IExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNp
emUoKTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBp
bnRyaW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAg
ICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhl
ZCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHJl
dmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xh
c3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7
CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3Ig
ZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZy
YW1lcy4KQEAgLTExNiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50
UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkg
Y29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVu
Y29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hh
bmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVz
OjpVbmtub3duOyB9CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBH
ZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0g
ICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0
dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYs
OSBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9
CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsK
LSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21w
b3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
aXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBv
cnRpbmcgdGlsZWQgZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2lu
Y2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENs
YW1wZWRBcnJheS5oPgpAQCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVt
IEJhY2tpbmdTdG9yZUNvcHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBz
dWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tp
bmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEs
MTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAj
ZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdP
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElt
YWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPcHRpb25zPgor
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0aW9ucykKKyAgICB7CisgICAg
ICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVycnJpZGVzKQorICAgICAgICA6
IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG92
ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKCkgPSBkZWZh
dWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9CisgICAgQmxlbmRNb2RlIGJs
ZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9CisgICAgRGVjb2RpbmdNb2Rl
IGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RpbmdNb2RlOyB9CisgICAgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247
IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+CisgICAgdm9pZCBzZXRPcHRp
b24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihm
aXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcikgeyBtX2NvbXBvc2l0
ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2b2lkIHNldE9wdGlvbihCbGVu
ZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRNb2RlOyB9CisgICAgdm9pZCBz
ZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBtX2RlY29kaW5nTW9kZSA9IGRl
Y29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRh
dGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGlu
dGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0
ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBtX2JsZW5k
TW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdN
b2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAgIEltYWdlT3JpZW50YXRpb24g
bV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsKKyAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvbkRlZmF1bHQg
fTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNpb24gMjQ5
MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmUKICAgICBzZXRDb250YWluZXJTaXplKHNp
emUpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURy
YXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdf
VEhFTUUpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7
CiAgICAgY29udGV4dC5jbGlwKGRzdFJlY3QpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJl
Y3QubG9jYXRpb24oKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgp
KQpAQCAtNjMsNyArNjMsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlCiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2
b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNv
bnRleHQpOwpAQCAtNzQsMTYgKzc0LDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGUKICAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1l
LCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgp
LmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29u
dGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBz
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKHNyY1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJh
bnNmb3JtKTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFj
aW5nKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBv
c2l0ZU9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0o
b3B0aW9ucyk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgJKHJldmlz
aW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIE5hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3QgRmxvYXRTaXplJik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAko
cmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0
aXZlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAKICNpZiBVU0UoQ0cpCiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNjYsNyArNjYsNyBAQCBJbnRTaXplIG5hdGl2
ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnCiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENv
bG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIHZv
aWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAg
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9P
cGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzksOCArMTc5LDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0xh
eWVyQnVmZmVyKFBsYXRmbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05h
dGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5k
ZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVy
cG9sYXRpb25EZWZhdWx0LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCks
IEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBv
c2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsK
ICAgICB9CiB9CiAKQEAgLTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1h
Z2UoUGxhdGZvcm1Db250CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2Ug
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0
aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFs
LCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1
bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICAgICAgZHJh
d05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3Rh
dGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtODc4LDM3ICs4
NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbAogICAgIGNh
aXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93
U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93
U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNhdmUoKTsKIAogICAgIC8vIFNldCB0aGUg
Y29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAgIGlmIChjb21wb3NpdGVPcGVyYXRvciA9PSBDb21w
b3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCAmJiAhY2Fp
cm9TdXJmYWNlSGFzQWxwaGEoc3VyZmFjZSkpCisgICAgaWYgKG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIG9wdGlvbnMuYmxlbmRNb2RlKCkgPT0g
QmxlbmRNb2RlOjpOb3JtYWwgJiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQogICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKICAgICBlbHNlCi0gICAgICAgIENh
aXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9z
aXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
LCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIEZsb2F0UmVjdCBkc3QgPSBkZXN0UmVjdDsK
LSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgeworICAgIGlm
IChvcHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewogICAg
ICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwg
MCkuCiAgICAgICAgIENhaXJvOjp0cmFuc2xhdGUocGxhdGZvcm1Db250ZXh0LCBkc3QueCgpLCBk
c3QueSgpKTsKICAgICAgICAgZHN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7Ci0gICAgICAg
IENhaXJvOjpjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1G
cm9tRGVmYXVsdChkc3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lk
dGhBc0hlaWdodCgpKSB7CisgICAgICAgIENhaXJvOjpjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0
LCBvcHRpb25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkp
OworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkp
IHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgd2lsbCBoYXZlIGl0
cyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBv
ZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxh
eW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KICAgICAgICAgICAgIGRz
dCA9IEZsb2F0UmVjdChkc3QueCgpLCBkc3QueSgpLCBkc3QuaGVpZ2h0KCksIGRzdC53aWR0aCgp
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRyYXdTdXJmYWNlKHBsYXRmb3JtQ29udGV4dCwg
c3VyZmFjZSwgZHN0LCBzcmNSZWN0LCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBnbG9iYWxB
bHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdTdXJmYWNlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZSwgZHN0LCBzcmNSZWN0LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCksIGdsb2Jh
bEFscGhhLCBzaGFkb3dTdGF0ZSk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnJlc3RvcmUoKTsKIH0K
IAotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQor
dm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSB3aHkgdGhlIHNpemUgaGFzIHRvIGJlIHBhc3NlZCBpbiBhcyBhbiBJbnRSZWN0LgotICAg
IGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2Us
IHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9y
KGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpLCBkZXN0UmVjdCk7CisgICAgZHJhd1BhdHRl
cm5Ub0NhaXJvQ29udGV4dChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgc3VyZmFjZSwgc2l6ZSwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3Iob3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKSwgZGVzdFJlY3QpOwogfQog
CiB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0
ZSYgc2hhZG93U3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjQ5MDMyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lkIGNsZWFyUmVjdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvCiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFk
b3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91Ymxl
LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxh
Z3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3Qg
U2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBT
aGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNh
aXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZh
Y2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0
IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3Qg
Q29sb3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAkocmV2
aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDExICsy
NzYsMTEgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybwogICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250
ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxl
LCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAg
ICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIENhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwg
c3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0
LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNp
emUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1h
Z2VDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBp
eGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRp
dmVJbWFnZVB0ciYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkocmV2aXNpb24gMjQ5MDMy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
M0RDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOSw3ICs1MzksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvCiAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUo
MSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXplLmhlaWdodCgpKTsK
ICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5v
bmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2Fu
dmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgQ29tcG9zaXRlQ29w
eSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52
YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7IENvbXBvc2l0ZUNv
cHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczLDEzICsyNzMs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YQogICAgIG1fZGF0
YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRvQmVJZGVudGl0eSA9IGZhbHNlOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxD
R0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY28KICNlbmRpZgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBzdWJJ
bWFnZShpbWFnZSk7CiAKLSAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3JpZW50YXRpb24udXNlc1dp
ZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdl
R2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3B0aW9u
cy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3Vi
SW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7CiAgICAgaWYg
KGN1cnJIZWlnaHQgPD0gc3JjUmVjdC55KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzU4LDE1
ICszNTgsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjbwogICAg
IGFkanVzdGVkRGVzdFJlY3QgPSByb3VuZFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkRGVzdFJlY3Qp
OwogI2VuZGlmCiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRN
b2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0
ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgLy8gSW1hZ2VPcmllbnRh
dGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApCiAgICAgQ0dDb250ZXh0VHJh
bnNsYXRlQ1RNKGNvbnRleHQsIGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0
LnkoKSk7CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwog
Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKLSAgICAg
ICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21E
ZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlv
bi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAh
PSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CisgICAgICAgIENHQ29udGV4dENvbmNhdENUTShj
b250ZXh0LCBvcHRpb25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0
ZWREZXN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51
c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVj
dCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRo
ZSBvcmllbnRhdGlvbiBvZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVl
ZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4K
ICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3QgPSBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0UmVj
dC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpLCBh
ZGp1c3RlZERlc3RSZWN0LndpZHRoKCkpOwpAQCAtNDA4LDEzICs0MDgsMTMgQEAgc3RhdGljIHZv
aWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKgogICAgIH0pOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlz
SW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAg
ICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBtX2lt
cGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFn
ZSYKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dD
b250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2Rl
KCkpOwogCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwg
ZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RN
KGNvbnRleHQsIDEsIC0xKTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQYXR0ZXJuKEltYWdlJgogICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRp
bGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uu
b3JpZ2luYWxTaXplKCk7Ci0jZWxzZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5z
aXplKCk7Ci0jZW5kaWYKICAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKICAg
ICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAko
cmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCwxMSArMzM0LDExIEBAIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29weU4KICAgICByZXR1cm4gaW1hZ2U7
CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmICgh
aW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyLT5kcmF3
KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAg
IGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMgKzM1MSwxMyBAQCB2
b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pCiAgICAgCiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KHJlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
YmxlbmRNb2RlKTsKKyAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCks
IGJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwog
I2Vsc2UKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbWFnZUJ1ZmZl
cjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZj
b250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKQEAgLTM2Nywx
MCArMzY3LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiAKIAog
ICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3Jj
UmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2
ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFk
anVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAg
ICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMzc4LDE0ICsz
NzgsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDbwogICAgIGlm
ICghY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKCZkZXN0
Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29w
eUJhY2tpbmdTdG9yZSkpIC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwgbmVlZCB0byBk
ZWVwIGNvcHkuCi0gICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihk
ZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGlt
YWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29weSA9
IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0
ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICBjb3B5LT5k
cmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMKICAgICByZXR1cm4g
Q29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0
IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXpl
ID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdAogICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXpl
ICE9IHNyY1NpemUpCiAgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwg
RmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNp
emUpKTsKIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1h
Z2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgbW9kZSwgb3JpZW50YXRpb24p
OworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXpl
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBjbGVhck5h
dGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3
LDcgKzI1Nyw3IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2UKICAg
ICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQpOwog
fQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3ICsyNjYsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHCiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogCiAgICAgICAgIGlmIChtX2Nh
Y2hlZEltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFnZUJ1ZmZlciAn
bV9jYWNoZWRJbWFnZUJ1ZmZlcicgdG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJbWFnZVJlY3Qn
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNp
b25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9h
dFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50
RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAkocmV2aXNpb24gMjQ5MDMy
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbQogfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZSkKICNpZiBVU0UoQ0cpCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUg
YW4gaW1hZ2UgZm9yIENhaXJvLgpAQCAtNDk2LDExICs0OTYsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6
OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAg
ICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0j
aWYgVVNFKENHKQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkK
LSNlbmRpZgotICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICAsIG1fb3B0aW9u
cyhvcHRpb25zKQogewogI2lmICFVU0UoQ0cpCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKQEAg
LTUxMiw3ICs1MDgsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBO
CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdl
LCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9k
ZSwgbV9vcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwg
bV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCkBAIC01MjgsNyArNTI0LDcgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbQogfQogI2VuZGlmCiAKLURy
YXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCitE
cmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDog
RHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdQYXR0ZXJuKQogICAgICwgbV9pbWFnZShpbWFnZSkK
ICAgICAsIG1fcGF0dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKQpAQCAtNTM2LDE0ICs1
MzIsMTMgQEAgRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgYwogICAgICwg
bV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX3Nw
YWNpbmcoc3BhY2luZykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1v
ZGUpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0KIAogdm9pZCBEcmF3UGF0dGVybjo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIGNvbnRleHQuZHJh
d1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0
ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3AsIG1fYmxlbmRNb2RlKTsKKyAg
ICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGls
ZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMp
OwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRHJhd1BhdHRlcm4mIGl0ZW0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0MSwx
NiArNjQxLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShE
SVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERy
YXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJh
d05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Jj
UmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKQEAgLTY2MiwxOSArNjYyLDE1IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXplIG1faW1h
Z2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UmVjdCBtX3Ny
Y1JlY3Q7Ci0jaWYgVVNFKENHKQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7Ci0gICAgQmxl
bmRNb2RlIG1fYmxlbmRNb2RlOwotI2VuZGlmCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAjZW5kaWYK
IAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCisgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdQYXR0
ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERy
YXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgY29uc3QgSW1hZ2UmIGltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQpAQCAtNjg1LDcgKzY4MSw3IEBAIHB1
YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2luZzsg
fQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIERyYXdQ
YXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKIApAQCAtNjk3LDggKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGVzdGlu
YXRpb247CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAgIEZsb2F0U2l6ZSBtX3NwYWNpbmc7
Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7
CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAogLy8gSXMgRHJhd2lu
Z0l0ZW0gYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNwYXJlbmN5IGxheWVyIGlzIGltcGxp
Y2l0bHkgdGhlIGNsaXAgYm91bmRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcsMTYgKzEyNywxNiBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRy
YXdUaWxlZEltYWdlCiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVD
VDJEKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIFJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBl
bmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKKyAgICBEcmF3aW5nSXRl
bSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAjZW5kaWYKIAotdm9pZCBS
ZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9p
ZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAg
IERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0o
RHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpKTsKKyAgICBEcmF3aW5nSXRl
bSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdQYXR0ZXJu
OjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHNwYWNpbmcsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lv
biAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw5ICs5Miw5IEBA
IHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6
Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
Jikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgICAgICByZXR1cm47CiAKICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1h
Z2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpKSwgeyBDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUgfSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzAsOCArMjcwLDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKAogICAgICAgICBJbnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0
ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAg
ICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAg
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGFkanVzdGVk
RGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJj
ZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0
KSwgRmxvYXRSZWN0KHNvdXJjZTJSZWN0KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0
KSwgRmxvYXRSZWN0KHNvdXJjZVJlY3QpLCB7IENvbXBvc2l0ZVNvdXJjZUluIH0pOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg4NSwxNSArODg1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6cGEKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnMo
Q29tcG9zaXRlQ29weSk7Ci0gICAgaWYgKG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkKLSAg
ICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24gPSBtX3ZpZGVvU291cmNlT3JpZW50
YXRpb247Ci0KICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdl
KG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjb250ZXh0LmRyYXdJbWFnZShnc3RJbWFnZS0+aW1hZ2UoKSwgcmVjdCwgZ3N0SW1hZ2Ut
PnJlY3QoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShnc3RJbWFn
ZS0+aW1hZ2UoKSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgeyBDb21wb3NpdGVDb3B5LCBtX3Jl
bmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgPyBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gOiBJbWFn
ZU9yaWVudGF0aW9uKCkgfSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NDksMTQgKzU0OSwxNCBAQCBJbWFnZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlcjo6CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZElt
YWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAK
LXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0cnVjdCBEcmF3
TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBm
bG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CisgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBm
aW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0
LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdl
KCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJl
cGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgp
LCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2
PigpLCBhcmc8Nz4oKSwgYXJnPDg+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigp
LCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01NjcsMTcgKzU2
NywxNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJCiAKICAgICBV
TlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4
dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihS
ZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBj
b21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkp
KTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9w
ZXJhdG9yLCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAotdm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4g
ZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwg
RmxvYXRQb2ludCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZT4geworICAgIHN0cnVjdCBE
cmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5l
VHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4gewogICAgICAgICB2
aXJ0dWFsIH5EcmF3UGF0dGVybigpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUo
UGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0g
ICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXllciks
IGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwg
YXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd1Bh
dHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4o
KSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAg
LTU4OCw3ICs1ODgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJu
CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGlt
YWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUo
KSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkocmV2aXNpb24gMjQ5MDMyKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJ
bWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2Vi
Q29yZTo6QmxlbmRNb2RlLCBXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUgPSBX
ZWJDb3JlOjpCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0xpbmUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDkw
MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgZHJhd0ds
eXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYKIH0KIAogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRl
eHQsIElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZlSW1hZ2VTaXpl
ID0gYml0bWFwU2l6ZShpbWFnZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VCaXRt
YXA7CkBAIC03NzQsMTAgKzc3NCwxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNv
bnRleHREaXJlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFw
U2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkpOwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNv
bnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
Y29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIGltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd05hdGl2ZUlt
YWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12
b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250
ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUg
PSBpbWFnZS0+R2V0U2l6ZSgpOwogCkBAIC04MDksMTYgKzgwOSwxNiBAQCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAm
JiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGlt
YWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBs
YXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6
OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRl
T3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0
aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZShhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAg
IGNvbnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQs
IG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgp
KSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAg
aWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Cisg
ICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50
cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBp
ZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWln
aHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAv
LyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVk
IHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9
IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFk
anVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC04
NDIsMTQgKzg0MiwxNCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
CiAgICAgICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybShjdG0pOwogfQogCi12b2lkIGRyYXdQYXR0
ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAq
IHRpbGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIGRyYXdQYXR0ZXJu
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIHRp
bGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0LnJl
bmRlclRhcmdldCgpOwogICAgIFBsYXRmb3JtQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihw
bGF0Zm9ybUNvbnRleHQpOwogCiAgICAgY2xpcChwbGF0Zm9ybUNvbnRleHQsIGRlc3RSZWN0KTsK
IAotICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21w
b3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0
aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25z
LmJsZW5kTW9kZSgpKTsKIAogICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9wZXJ0aWVzID0gRDJEMTo6
Qml0bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CiAgICAgYml0bWFwQnJ1c2hQcm9wZXJ0aWVzLmV4dGVu
ZE1vZGVYID0gRDJEMV9FWFRFTkRfTU9ERV9XUkFQOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAko
cmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RpcmVjdDJET3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsCiAKIHZvaWQgZHJhd0ds
eXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBT
dHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGb250JiwgZG91YmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlwaHMsIGNv
bnN0IFZlY3RvcjxmbG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9yPERXUklU
RV9HTFlQSF9PRkZTRVQ+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBm
bG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQ
YXRoKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNv
dXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Cit2b2lkIGRyYXdQYXR0ZXJu
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogdm9p
ZCBkcmF3V2l0aG91dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJU
YXJnZXQqKT4mIGRyYXdDb21tYW5kcyk7CiB2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRv
d1N0YXRlJiwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBk
cmF3Q29tbWFuZHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAko
cmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3
MSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
ICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUs
IEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBG
bG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDIsNyArMTAyLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoYwog
ICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKIHsKICAgICBhdXRv
IHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkocmV2aXNpb24gMjQ5
MDMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdl
RnJvbUltYWdlKEltCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29u
dGV4dC5DR0NvbnRleHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUu
aGVpZ2h0KTsKICAgICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFk
anVzdGVkSW1hZ2VTY2FsZSB9KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBG
bG9hdFBvaW50KCksIEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CisgICAgICAg
IGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCB7IG9yaWVudGF0aW9uIH0p
OwogICAgIH1dOwogICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKIAogICAgICAgICAgICAgYXV0byBpbnRlcnBv
bGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdM
YXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9k
ZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAg
ICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2Vv
bWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkp
LCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0
byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRl
c3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0
cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIHsgY29tcG9zaXRlT3AsIGJnTGF5
ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICAgICAg
ICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5n
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAg
ICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0Zv
ckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiAyNDkwMzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdAogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRl
cnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZp
bWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwg
YWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50
ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwg
eyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY5LDcgKzQ2OSw3IEBA
IHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICAgICAgICAgICAg
ICAgICAgY2VudGVyWSA9IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRT
aXplKGxlZnRCb3JkZXIgKyBsZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldp
ZHRoLCB0b3BCb3JkZXIgKyB0b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lk
dGgpOwogCi0gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1h
Z2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAg
ICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVs
cyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmlj
ZVNjYWxlRmFjdG9yKSwgeyBpbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgICAgICAgICAgICAg
ZXJyb3JQaWN0dXJlRHJhd24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzIsNyArNjMy
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogICAgICAgICBk
b3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3Mo
KSk7CiAKICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygq
aW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRp
b24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIHsgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbiB9KTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVl
c3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZENs
aWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCShyZXZp
c2lvbiAyNDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwcwogICAgICAgICByZXR1cm47CiAKICAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1
YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbiB9KTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpn
ZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29y
KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1CiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0
LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25l
ZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAy
NDkwMzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzgsNyArMTc4LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVy
U2l6ZSgpIGNvbnN0CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJT
aXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKQEAgLTIwMiw3ICsyMDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1h
Z2U6OmRyYXdGb3JDb250YWluCiAKICAgICBmcmFtZVZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVudChp
bml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXco
Y29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBJbWFn
ZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIG9w
dGlvbnMpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7CiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJl
Y3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJh
dyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgLy8gRklYTUU6IFdL
KEJ1ZyAxMTM2NTcpOiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAg
ICAgcmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgTmF0aXZlSW1hZ2VQdHIg
U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbgogICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHBs
YXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdldC5nZXQoKSk7CiAgICAgR3JhcGhpY3NDb250
ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1h
cFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1vcnkpOwogCi0gICAgZHJhdyhsb2NhbENvbnRl
eHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7Cisg
ICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpKTsKIAogICAgIHJldHVybiBuYXRp
dmVJbWFnZTsKIH0KICNlbmRpZgogCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVy
U2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkws
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7CiAgICAgem9vbWVkQ29u
dGFpbmVyUmVjdC5zY2FsZShjb250YWluZXJab29tKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VT
UkdCLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1
ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250
ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwg
aW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRl
eHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBp
bWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwogICAgIGlmIChjb250ZXh0LmRy
YXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFz
aygpOwogCkBAIC0yODYsMTAgKzI4NiwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZv
ckNvbnRhaW5lcihHCiAgICAgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFn
ZUJ1ZmZlclNjYWxlLndpZHRoKCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAog
ICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3
UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5U
cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBp
bWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2Fs
ZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdl
RHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwpAQCAtMjk4LDExICsyOTgsMTEgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdy
YXBoaWNzQwogICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGNvbnRleHQuY2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAogICAgIGZsb2F0
IGFscGhhID0gY29udGV4dC5hbHBoYSgpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1Ry
YW5zcGFyZW5jeUxheWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBi
bGVuZE1vZGUgIT0gQmxlbmRNb2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOworICAgIGJvb2wgY29t
cG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gb3B0aW9ucy5jb21wb3NpdGVPcGVy
YXRvcigpICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgb3B0aW9ucy5ibGVuZE1vZGUoKSAhPSBC
bGVuZE1vZGU6Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWly
ZXNUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXIoYWxwaGEpOwogICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEwICs5NCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAg
IGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0Zv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
Y29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0b1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0
IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJM
JiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKIAogICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZv
ckNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDI0OTAzMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE2
ICszNCwxNSBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjCiAgICAg
cmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9
CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1
bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIG1faW1hZ2UtPmRy
YXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20s
IG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKKyAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVy
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
bV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXpl
LCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9k
ZSk7CisgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250
YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9
CiAKIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAkocmV2aXNpb24gMjQ5MDMyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGlj
OgogICAgICAgICBtX2ltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNX
aWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29s
IGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5MDM3KQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3NiBAQAorMjAxOS0wOC0yMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBpbWFn
ZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIEltYWdl
UGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6aW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Ym91
bmRzUG9zaXRpb25JbmZvcm1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmVsZW1l
bnRQb3NpdGlvbkluZm9ybWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6c2VsZWN0
aW9uUG9zaXRpb25JbmZvcm1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRleHRJ
bnRlcmFjdGlvblBvc2l0aW9uSW5mb3JtYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpzaGFyZWFibGVCaXRtYXBTbmFwc2hvdEZvck5vZGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdFBvc2l0aW9uSW5mb3JtYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdGFydEludGVyYWN0aW9uV2l0aEVsZW1l
bnRBdFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3RvcElu
dGVyYWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFj
dGlvbk9uRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om5leHRBc3Npc3RhYmxl
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZvY3VzTmV4dEZv
Y3VzZWRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmF1dG9maWxsTG9naW5DcmVkZW50aWFscyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OmFyZUVzc2VudGlhbGx5RXF1YWxBc0Zsb2F0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uVmlld0xheW91dFNpemUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXREZXZpY2VPcmllbnRhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldE92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkeW5hbWljVmll
d3BvcnRTaXplVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVz
ZXRWaWV3cG9ydERlZmF1bHRDb25maWd1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cmVzZXRJZGVtcG90ZW50VGV4dEF1dG9zaXppbmdJZk5lZWRlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc2V0VGV4dEF1dG9zaXppbmcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzY2hlZHVsZVNocmlua1RvRml0Q29udGVu
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNocmlua1RvRml0Q29udGVu
dFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbW1lZGlh
dGVseVNocmlua1RvRml0Q29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNob3VsZElnbm9yZU1ldGFWaWV3cG9ydCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25X
aWxsUmVzaWduQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjphcHBsaWNhdGlvbkRpZEZpbmlzaFNuYXBzaG90dGluZ0FmdGVyRW50ZXJpbmdCYWNr
Z3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25X
aWxsRW50ZXJGb3JlZ3JvdW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0Ojph
ZGp1c3RWZWxvY2l0eURhdGFGb3JCb3VuZGVkU2NhbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzY2FsZUZyb21VSVByb2Nlc3MgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpzZWxlY3Rpb25Jc0luc2lkZUZpeGVkUG9zaXRpb25Db250YWluZXIpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3Rz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2lsbFN0YXJ0VXNlclRyaWdn
ZXJlZFpvb21pbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaXNwYXRj
aEFzeW5jaHJvbm91c1RvdWNoRXZlbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3VG9QREYpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYXJkd2FyZUtleWJvYXJkQXZh
aWxhYmlsaXR5Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVw
ZGF0ZVN0cmluZ0ZvckZpbmQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtUHJlZmVyc1RleHRMZWdpYmlsaXR5QmFzZWRab29t
U2NhbGluZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVNlbGVjdGlvbldpdGhEZWx0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1vdmVCeUdy
YW51bGFyaXR5UmVzcGVjdGluZ1dvcmRCb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OnZpc2libGVQb3NpdGlvbkZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRl
eHQpOiBEZWxldGVkLgorCisyMDE5LTA4LTIyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsIGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNo
b3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUgSW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTA1OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIEltYWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2Vi
S2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50
IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1aWxkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjQ5
MDMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MTgsNyArMjYxOCw3IEBAIHN0YXRpYyB2b2lkIGltYWdl
UG9zaXRpb25JbmZvcm1hdGlvbihXZWIKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgcmVu
ZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJ
bWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNp
emUuaGVpZ2h0KCkpKSwgeyByZW5kZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAg
aW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377089</attachid>
            <date>2019-08-22 19:00:55 -0700</date>
            <delta_ts>2019-08-22 19:06:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190822190053.patch</filename>
            <type>text/plain</type>
            <size>157884</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uYmE2ZjkxMDllMDk1MjAzN2Q4MjgyOWI3MDYxMjFk
ZGU0YWQzMzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxOS0wOC0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJu
OjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRl
cm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVu
dCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGUzNTFkMmY3
Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi4yOWIxZjMwYWYwNzJkOTQzMmNkMGI4YmFj
NWEwNjJlZjIwM2Y4YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
IGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUg
SW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIElt
YWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24p
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFj
ZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcg
QEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJB
MjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2
OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVF
NTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQx
Nyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhU
c1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2
MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAw
MTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5j
cHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8s
CkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8q
IEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVE
MDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgz
RjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2
YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQ
b2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09w
dGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsK
LQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBk
ZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09w
dGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
IH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBh
dXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEw
ICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRt
YXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBE
YXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5
SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNp
emUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAz
LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAg
PSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRp
bmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsK
IAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWlu
c0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFn
ZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3Np
dGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBu
b3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1h
Z2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJs
ZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRp
ZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAg
ICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0
ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBD
b2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBz
cmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAg
ICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
KSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwx
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1h
cCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQg
KzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCku
Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGlt
YWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4
YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJl
dHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQot
ICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0
IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9y
RHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
ZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAg
ICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZy
YW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAg
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xv
cjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5j
b2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAh
bV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAg
ICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYg
bV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVj
dCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5p
bmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFs
cGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3Ig
YXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2
NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAg
Q29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIElu
dFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRl
RGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdl
IG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNh
bGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxw
dHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
ICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRN
b2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1
YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3
MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21w
b3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsK
KworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7
CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8g
aW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
YWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlv
bnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAh
PSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBk
cmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0
ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5
MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9z
c2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODcz
NzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRl
c3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAg
ZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRl
c3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5z
aXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAog
dm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3Zp
ZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZv
cm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2Nzhk
NzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1f
cGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
aW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3
NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgx
NjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBl
N2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFn
ZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1Jl
Y3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQog
CiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlk
ZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9y
bWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0
aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3Bh
Y2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJj
MDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUx
M2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1
NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAg
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291
cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
KyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxl
LgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6
ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAg
ICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6
OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4
ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4
OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgog
fTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
bkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyAr
MzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1Njlh
ZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWVi
YzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpk
cmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwo
Y29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5
NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1
NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMz
MTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgs
MjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgo
KSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lk
dGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAg
dmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkp
OwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBz
Y2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7Cisg
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlv
bnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCku
aGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0
aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
U3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxv
YXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5z
Y2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2Rl
OjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0y
NTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0
aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24o
KSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUg
b3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBv
ZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVI
ZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0g
aFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBv
cCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlv
bigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUo
KTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRy
aW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAg
aW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4
MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4
YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEx
NiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdl
dEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90
U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZk
ZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpA
QCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNv
cHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdz
IGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJz
ZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAg
ICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBz
dGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMw
MzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVy
cnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAg
ICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9
CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rp
bmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+
CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7Cisg
ICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRN
b2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBt
X2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2Rp
bmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUg
fTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50
ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLjQ4ZWQ3YzUwZTQ1
OWVmNjc0YTZiZWNmZDlhMDRkM2M5YWFmODJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29u
dGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBz
cmNSZWN0LnNpemUoKSkKQEAgLTYzLDcgKzYzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYK
ICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4
dCk7CkBAIC03NCwxNiArNzQsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBUaGVt
ZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZs
b2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAv
LyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZl
ci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVm
ZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNy
Y1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBVTlVTRURf
UEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBVTlVTRURfUEFS
QU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURf
UEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYxM2Y0Njk2MzFmYjZlZjRk
NTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEyYTBjZDYxM2Q4MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVy
cmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCBkMGZmNjdlZmUxYTZj
MmZiOWQyY2VkYzc1ODc1ZmQ4ODBlNmI1NzMxLi4zOWQ0NGI4NjQ1N2JjMjIwMjhkNjc3YmJkZGE3
NGEzOTkyZTJhNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVh
ck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRl
YWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93
TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VC
dQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXll
ck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSks
IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0
LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAg
LTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAg
ICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFk
b3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwog
ICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBT
ZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3Ig
PT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwg
JiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9k
ZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNl
KSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1D
b250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVz
dFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0
LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwot
ICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJh
bnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3Jt
Q29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwg
aGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50
YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3Ig
cGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAg
ICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qu
d2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgp
LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVj
dC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBz
dXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9P
cGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0
KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzlj
N2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNk
MjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZv
aWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVy
cG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1Bh
dHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRT
aXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
Owordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJh
d1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29u
c3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYw
YmM0M2QyYWIuLmNiZWMwNmU2NjBlMmEzZDYwNmEzMmJjODExMWMxMjc2ZjEwMDBmMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAg
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1D
b250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZjFiMDJk
MzRhYjJmZjI5YWRjZmI4NzQzYzg5NGMxZTQ2MDhiNjczYi4uMmY1MTlkNDU0NzdkNDM3OThiNzU5
YTgxNTM0NjJjOTgzNTM3Y2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
QEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdl
OjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5l
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQwYmY5
YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNkNmJi
NzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1p
bWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJ
bWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0lt
YWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2Mzkw
MTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdl
dCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJI
ZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1h
Z2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdl
dCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAgYWRq
dXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7CiAj
ZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUp
OworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9u
IGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgp
KTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAg
ICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1
bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdp
bGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9y
aWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQg
Zm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAg
ICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0Lngo
KSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVz
dGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9pZCBw
YXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIG1f
aW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlv
bihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsg
ZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0x
KTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0
LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFm
YTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMg
KzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNl
Ci0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2
NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewog
ICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29w
eSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNv
cHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JS
ZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUmVm
UHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZkNWQ5
ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IocGl4
ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
Ml0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTExZTdi
OGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYzYWE0
YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVu
Y2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAo
bV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZm
ZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VS
ZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1NGY2
NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNlODVl
ZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLjk0MDIwNTM1MzMxY2Y5ZmU2Mjc2MTJh
NzNhYTAzYmMzYmIwMWZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0
byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMTEgKzQ5Niw3IEBAIERyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rl
c3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0jaWYgVVNFKENH
KQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSNlbmRpZgot
ICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQogewogI2lmICFVU0UoQ0cpCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKQEAgLTUxMiw3ICs1
MDgsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICNlbmRpZgpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiB9CiAjZW5k
aWYKIAotRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK0RyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRlcm4pCiAgICAgLCBtX2ltYWdl
KGltYWdlKQogICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pCkBAIC01
MzYsMTQgKzUzMiwxMyBAQCBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlYwogICAgICwgbV9kZXN0aW5h
dGlvbihkZXN0UmVjdCkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX3NwYWNpbmcoc3Bh
Y2luZykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCisgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0KIAogdm9pZCBEcmF3UGF0dGVybjo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd1BhdHRlcm4o
bV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNm
b3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3AsIG1fYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1f
cGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMpOwogfQogCiBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1Bh
dHRlcm4mIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA4YmNjZTE5
YjI0ZTFmZjVmNjViNmJmNDhjOTQxNzBjOWI3ZTAxZmI4Li5jZjNjZjkyOTMwYzQ2ZGJlNmM3Mjk3
YTVhOTFjZTI1MTI1Y2JhNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTY0MSwxNiArNjQxLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8
IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTY2MiwxOSArNjYyLDE1IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UmVj
dCBtX3NyY1JlY3Q7Ci0jaWYgVVNFKENHKQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7Ci0g
ICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwotI2VuZGlmCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAj
ZW5kaWYKIAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERy
YXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgY29uc3QgSW1hZ2Um
IGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQpAQCAtNjg1LDcgKzY4MSw3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
Y2luZzsgfQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAg
IERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNjk3LDggKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb247CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAgIEZsb2F0U2l6ZSBtX3Nw
YWNpbmc7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVu
ZE1vZGU7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAogLy8gSXMg
RHJhd2luZ0l0ZW0gYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNwYXJlbmN5IGxheWVyIGlz
IGltcGxpY2l0bHkgdGhlIGNsaXAgYm91bmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGU3OTdhN2ZkNDI4NzE4ZDM5NzA4MDI1NGEyZmZkNjE2MjNjYTY1
NGUuLmUyMGYzZWQxM2NiNmU1NWY3ODJlOGM5YWRjMTMwODcyZGU2ZWYxMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIElt
YWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0CiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
Cit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJ
dGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAjZW5kaWYK
IAotdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChu
ZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
MzE3OThjMWIyZDQ3NDM3NDk4ZmMzMTVhYzE2M2QzNWU0Njc1MzdmMC4uNTE2ZDRkZjhjN2ZkOWVi
NWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC05Miw5ICs5Miw5IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNlbmRpZgot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZWYz
YWQ5MDcxZWU4YzQ1MGQ5MWY5YmY5ODI0ODU1NTgwZTFmNDE3Li5lNGQ3Mjk1N2IwY2RlODdmMTdm
Zjk3MmZjYjcxOTdjOTU5ZjMzMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBG
RUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VP
dmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgeyBDb21w
b3NpdGVTb3VyY2VPdmVyLCBtX21vZGUgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApp
bmRleCA1MzIzYmVkYWE1NzBhNGIyMTI0MTY4YzQ2NWI0OTUxYzA0MWY0MzlhLi5kNTZkYjQwYzA0
OTRkYjE3M2YwMDE3NDRiNWMxYmM0ZDJjMWE1YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcw
LDggKzI3MCw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNv
dXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
MlJlY3QpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
UmVjdCksIHsgQ29tcG9zaXRlU291cmNlSW4gfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMDJlMjhlZGNkNDA3ZmRm
ZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5Li4wODJmMTk0NGU5NDU5NmVjNGQ2OTEyMDZiZDQ1YjQx
MjI1MTE5NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04ODUsMTUgKzg4NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3Np
dGVDb3B5KTsKLSAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQotICAgICAgICBw
YWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsK
LQogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1w
bGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNv
bnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFnZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgp
LCBwYWludGluZ09wdGlvbnMpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFn
ZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCB7IENvbXBvc2l0ZUNvcHksIG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCA/IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA6IEltYWdlT3JpZW50
YXRpb24oKSB9KTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDUwZTBj
M2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMuLjhmNmI4ODQ0ZjA5ZTM2ZGMyMGM1
N2M5ZmY2NWMyMzQ4MGJiZGI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksMTQgKzU0OSwxNCBAQCBJbWFn
ZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3
VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1
Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRh
dGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4geworICAgIHN0cnVjdCBEcmF3TmF0aXZl
SW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdOYXRp
dmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVy
YXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4o
KS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1Pigp
LCBhcmc8Nj4oKSwgYXJnPDc+KCksIGFyZzw4PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBh
cmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTY3
LDE3ICs1NjcsMTcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAgICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgeyBv
cHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBD
YWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFp
bnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIElu
dFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+IHsKKyAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4g
ZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3Vy
ZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwg
RmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKICAgICAgICAgdmlydHVhbCB+RHJh
d1BhdHRlcm4oKSA9IGRlZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3Bl
cmF0aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAg
Q2Fpcm86OmRyYXdQYXR0ZXJuKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5n
ZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpLCBh
cmc8Nj4oKSwgYXJnPDc+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKGNvbnRl
eHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigp
LCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpLCBhcmc8Nj4oKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01ODgsNyArNTg4
LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5n
KTsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUo
c3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSkpOworICAg
ICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwg
SW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgK
aW5kZXggZGJkNjcyMzE0ODRmOTE4NzIxY2MwYmZkZDg2Mzg1ZTdmZTViODlmOS4uODI2MGM0OGFk
Nzk4Njg0YzZlNTdjMWQ2NmRmYmU2ZDAxMDFjMWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjcsOCArNjcsOCBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6
SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25z
dCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdl
YkNvcmU6OkJsZW5kTW9kZSwgV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlID0g
V2ViQ29yZTo6QmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCmlu
ZGV4IGQ3YTBlOTgzOTcxOGMzMTBlYTFmMjU5YTVhZjRlNDFhZWU4MmM1MWMuLjlhZTJhNzJlOTBm
OTViOWFhYTQ2NDg3ODhjNmYyN2ExNzdjOGZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCkBA
IC03NjUsNyArNzY1LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGwKIH0KIAogCi12b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJ
V0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBw
bGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdp
bmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9i
YWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0
aXZlSW1hZ2VTaXplID0gYml0bWFwU2l6ZShpbWFnZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFw
PiBkZXZpY2VCaXRtYXA7CkBAIC03NzQsMTAgKzc3NCwxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBp
bWFnZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUo
ZGV2aWNlQml0bWFwLmdldCgpKTsKLSAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0
LCBkZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBv
c2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKIH0KIAotdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
SUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0
ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9y
bUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBiaXRtYXBTaXplID0gaW1h
Z2UtPkdldFNpemUoKTsKIApAQCAtODA5LDE2ICs4MDksMTYgQEAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAq
IGltYWcKICAgICBpZiAoIXNob3VsZFVzZVN1YmltYWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNp
emUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVk
RGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAot
ICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3Np
dGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJs
ZW5kTW9kZSgpKTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2lu
IHRvIGJlIGF0ICgwLCAwKS4KICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGFkanVzdGVkRGVzdFJl
Y3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7CiAgICAgY29udGV4dC0+U2V0VHJhbnNmb3Jt
KHRyYW5zZm9ybSk7CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50
KCkpOwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
LSAgICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3Jt
RnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVu
dGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
bigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgY29uY2F0Q1RNKHBsYXRm
b3JtQ29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFk
anVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9u
KCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9u
IHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZv
ciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2Fz
IG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhl
cmUuCiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVz
dFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwgYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQo
KSwgYWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsKQEAgLTg0MiwxNCArODQyLDE0IEBAIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQs
IElEMkQxQml0bWFwKiBpbWFnCiAgICAgICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybShjdG0pOwog
fQogCi12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNv
bnRleHQsIElXSUNCaXRtYXAqIHRpbGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Q29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRl
eHQsIElXSUNCaXRtYXAqIHRpbGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBjb250ZXh0ID0g
cGxhdGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpOwogICAgIFBsYXRmb3JtQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgY2xpcChwbGF0Zm9ybUNv
bnRleHQsIGRlc3RSZWN0KTsKIAotICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxh
dGZvcm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBTdGF0ZTo6
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVP
cGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIGF1dG8gYml0bWFwQnJ1c2hQ
cm9wZXJ0aWVzID0gRDJEMTo6Qml0bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CiAgICAgYml0bWFwQnJ1
c2hQcm9wZXJ0aWVzLmV4dGVuZE1vZGVYID0gRDJEMV9FWFRFTkRfTU9ERV9XUkFQOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5oCmluZGV4IDA2ZjY1NjE4ZWIyOTA3Yzg1ZTE0ZjYwZmNhNjMzYjA4ODY5YjJlOGEu
LmJjY2Y2NTY5ZDg4YzU0YTEzZmNhZjA3MjJhOTBiMzg4MzFiOGQ5NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmgKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2Um
LCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGb250JiwgZG91
YmxlLCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlwaHMsIGNvbnN0IFZlY3Rvcjxm
bG9hdD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9yPERXUklURV9HTFlQSF9PRkZT
RVQ+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3Qg
U2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFk
b3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQs
IGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0
IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgSVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Cit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogdm9pZCBkcmF3V2l0aG91
dFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdSZWN0LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRy
YXdDb21tYW5kcyk7CiB2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29u
c3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDZiYjY0NGEyYjY1ZTIz
NGMxNWZlM2NmZmY5ZWI3MzkxOTQ0ZDQxYzEuLjQ0MjVmZDI2YWJlODU0NTFkMmMwMzJmMzZhMjZh
NTdlZTMxZTJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcx
LDggKzcxLDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxl
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0
ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0
IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJl
Y3QyRC5jcHAKaW5kZXggNGU0ZDg4ZGU0NDQxZmUzZDY1NjdjNmU4YThmMjhhNTVlODMwNjg3Yi4u
YzYwMzg1MWNkNTM1MDY0NTZlY2I3ZjBjOTJhMDQzODA5MmM4MWE5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURp
cmVjdDJELmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29s
b3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXpl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7CiAgICAgYXV0byBwbGF0Zm9ybUNvbnRl
eHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQppbmRleCAxNDdjMmQwYjViM2ZlOTgxMTBiMGZjM2FjODFm
NmJiZDc2ZmE4YWRkLi41MDI3OTkwY2U1NWU0NjFiMmRkODJiOWMzMjllOWQ5YTMyZjgwZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KQEAgLTk2LDcg
Kzk2LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1h
Z2UsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24KICAgICAgICAgR3JhcGhpY3NDb250ZXh0
IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRq
dXN0ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3Jp
ZW50YXRpb24pKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50
KCksIHsgb3JpZW50YXRpb24gfSk7CiAgICAgfV07CiAgICAgcmV0dXJuIGltYWdlQ29weS5DR0lt
YWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKaW5kZXggOTAxYzQxMTBlMWM1NmJhNjBhNGRkM2JhN2I5M2ZhYWY2MDQxY2IzMy4u
NzQ4MmNlMDIwYzk0MTBmNTZlYjA2MDRmM2M1M2JmOWIxYmQyNmM4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC05NTUsNyAr
OTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRl
ZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICAgICAgYXV0byBpbnRl
cnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAm
YmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5n
TW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAg
ICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwg
Z2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNl
KCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAg
YXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5
LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2Vv
bWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIHsgY29tcG9zaXRlT3AsIGJn
TGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICAg
ICAgICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29k
aW5nKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7
CiAgICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGlu
Z0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggOTEzYmI0MTNiOTQyZjFlMDYyNmNmNThj
MTQ1YWIzMjZiNzFjYzI5Ni4uN2FjMDRiOGJhNGY0MTUxM2IzZmNiYWYxOTMxYmNmNDQ4MDVjOTQ4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFp
bnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNo
b29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRS
ZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYg
cGFpbnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCBmNTFlMmZlYjM3ZTFmY2YwZmQwZTc5MWFlNjRmMDNlZTg4YTJhN2M4Li4zOTM1Y2I0NWExNGU2
ZDc2ODc5YTVkNzE4ZTUwYTQwNWYzOTQ4YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZgogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFn
ZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlz
c2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNz
aW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50
YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFw
UmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwg
aW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCB7IGltYWdlT3JpZW50YXRpb24oKSB9KTsK
ICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9
CiAKQEAgLTYzMiw3ICs2MzIsNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50
SW50b1JlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICBk
b3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3Mo
KSk7CiAKICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygq
aW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRl
eHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRp
b24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIHsgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbiB9KTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVl
c3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZENs
aWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggMGRmZTI4
Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NC4uNGZlODU4NjI1YzkyOWQ4MGJlY2Fm
ZWE2NmYwNjRlMzQyMTgxMjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBS
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQs
ICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBh
bGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAK
IEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0
IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0NGNiMjAwMWMwYmU4
YWI0Mjc3NmY1NTc1NmUxNDQwMzc1YzAxN2JhLi5hNDJjZTZlYzJkNjkzOWMwMDE2MWYxNzliZTI2
NDRlMTI0MjkyNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBz
aG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlm
IChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVp
Z2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0KTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CmluZGV4IDVjNTZiNjk5OTViYzkyZjRjYTg4MWUyYjkxZTlmMzdmZjVjMzhmNTIuLjAwYWJjMGQx
MjczYjBmZWNlMDEzNzdlZTliOThjYWM3ZDVmODZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEludFNpemUgU1ZHSW1hZ2U6
OmNvbnRhaW5lclNpemUoKSBjb25zdAogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRy
YXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUg
Y29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJh
Z21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFn
ZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXQKIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KGluaXRpYWxG
cmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0
LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIEltYWdlRHJhd1Jl
c3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucyk7
CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogICAgIGlmICghYnVmZmVyKSAv
LyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwg
cmVjdCgpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBE
b250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShD
b3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0Nywx
NCArMjQ3LDE0IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBH
cmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKICAgICBHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6
Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAgICBkcmF3KGxvY2Fs
Q29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25l
KTsKKyAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgcmV0dXJu
IG5hdGl2ZUltYWdlOwogfQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5l
clJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXplKTsKICAgICB6b29t
ZWRDb250YWluZXJSZWN0LnNjYWxlKGNvbnRhaW5lclpvb20pOwpAQCAtMjcxLDcgKzI3MSw3IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0
KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAg
ICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRh
aW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJT
aXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6
Ok5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFp
bmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNp
emUsIHpvb21lZENvbnRhaW5lclJlY3QpOwogICAgIGlmIChjb250ZXh0LmRyYXdMdW1pbmFuY2VN
YXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCkBAIC0y
ODYsMTAgKzI4NiwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHVuc2NhbGVkUGF0
dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1h
Z2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VN
YXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2Nh
bGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29t
cG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRz
dFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jl
c3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI5OCwxMSArMjk4LDExIEBAIEltYWdl
RHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgQVNTRVJUKHZpZXcpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVu
ZE1vZGUoKSk7CiAgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwog
CiAgICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LmFscGhhKCk7Ci0gICAgYm9vbCBjb21wb3NpdGlu
Z1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBhbHBoYSA8IDE7Cisg
ICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBvcHRpb25zLmJsZW5k
TW9kZSgpICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9z
aXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgIGNvbnRleHQuYmVnaW5U
cmFuc3BhcmVuY3lMYXllcihhbHBoYSk7CiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggMDc1NDI0ZmM3NWRiZGUwOTkxNzBmZjNm
NmViYTZlNmM3MWZkMmUxNS4uNjE0NTg1MzQwM2I0NzdhZWM3MTFjOGRkNjJmODgzNjU0OTllMDJk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTk0LDEwICs5NCw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAg
IGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0Zv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6
ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQg
Y29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0b1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0
IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJM
JiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKIAogICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcAppbmRleCBjZjhjYzNlNWNlYzhlODEyZGU2OWE5ZjQ0YWRiYjdiMDVjNTVjMDA1Li5k
NzBhNjQwYzZhMDQ5MWU3ZTE2N2Y5NGMxODBlMjc5MWEzMWVhYzhhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM0
LDE2ICszNCwxNSBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25z
dAogICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6
ZSkpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBtX2lt
YWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWlu
ZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRl
T3AsIGJsZW5kTW9kZSk7CisgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29u
dGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50
VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNv
bnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFp
bmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBi
bGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQs
IG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlv
bnMpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
aAppbmRleCA4NjlkMDk3MWM1YjJmZTVkNDk1MWRkNjAzNDBhZTM2M2NmNzc2ZjA0Li41N2IyMDRk
OTgzZmIwN2IxYTdlZDYxYTFhZmViNGViN2Y4YWEwZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTMsOSArNTMsOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGlu
dHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAK
LSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKLSAgICB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwog
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgog
ICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggNTUyZWYxYThmZTJkNTU1NjQzYWU5NWM1NDVhNjA1Y2Y3NWE3
YjM1Yy4uNThhOWU3ODk4N2M5YzRhNDIzYjJkOWM0NDlkOGNhMDAzN2QzMWU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTI2MTgsNyArMjYxOCw3IEBAIHN0YXRpYyB2b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihX
ZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRlCiAgICAgaWYgKCFncmFw
aGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFw
U2l6ZS5oZWlnaHQoKSksIHJlbmRlckltYWdlLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSksIHsgcmVuZGVySW1hZ2UuaW1hZ2VPcmll
bnRhdGlvbigpIH0pOwogICAgIGluZm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377090</attachid>
            <date>2019-08-22 19:06:43 -0700</date>
            <delta_ts>2019-08-23 00:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190822190642.patch</filename>
            <type>text/plain</type>
            <size>157865</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uYmE2ZjkxMDllMDk1MjAzN2Q4MjgyOWI3MDYxMjFk
ZGU0YWQzMzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxOS0wOC0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJu
OjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRl
cm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVu
dCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGUzNTFkMmY3
Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi4yOWIxZjMwYWYwNzJkOTQzMmNkMGI4YmFj
NWEwNjJlZjIwM2Y4YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
IGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUg
SW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIElt
YWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24p
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFj
ZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcg
QEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJB
MjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2
OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVF
NTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQx
Nyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhU
c1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2
MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAw
MTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5j
cHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8s
CkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8q
IEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVE
MDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgz
RjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2
YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQ
b2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09w
dGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsK
LQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBk
ZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09w
dGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
IH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBh
dXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEw
ICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRt
YXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBE
YXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5
SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNp
emUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAz
LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAg
PSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRp
bmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsK
IAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWlu
c0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFn
ZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3Np
dGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBu
b3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1h
Z2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJs
ZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRp
ZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAg
ICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0
ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBD
b2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBz
cmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAg
ICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
KSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwx
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1h
cCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQg
KzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCku
Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGlt
YWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4
YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJl
dHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQot
ICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0
IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9y
RHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
ZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAg
ICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZy
YW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAg
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xv
cjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5j
b2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAh
bV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAg
ICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYg
bV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVj
dCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5p
bmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFs
cGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3Ig
YXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2
NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAg
Q29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIElu
dFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRl
RGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdl
IG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNh
bGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxw
dHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
ICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRN
b2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1
YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3
MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21w
b3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsK
KworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7
CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8g
aW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
YWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlv
bnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAh
PSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBk
cmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0
ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5
MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9z
c2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODcz
NzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRl
c3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAg
ZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRl
c3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5z
aXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAog
dm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3Zp
ZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZv
cm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2Nzhk
NzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1f
cGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
aW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3
NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgx
NjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBl
N2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFn
ZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1Jl
Y3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQog
CiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlk
ZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9y
bWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0
aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3Bh
Y2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJj
MDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUx
M2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1
NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAg
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291
cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
KyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxl
LgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6
ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAg
ICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6
OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4
ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4
OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgog
fTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
bkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyAr
MzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1Njlh
ZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWVi
YzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpk
cmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwo
Y29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5
NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1
NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMz
MTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgs
MjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgo
KSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lk
dGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAg
dmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkp
OwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBz
Y2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7Cisg
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlv
bnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCku
aGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0
aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
U3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxv
YXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5z
Y2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2Rl
OjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0y
NTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0
aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24o
KSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUg
b3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBv
ZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVI
ZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0g
aFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBv
cCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlv
bigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUo
KTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRy
aW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAg
aW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4
MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4
YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEx
NiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdl
dEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90
U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZk
ZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpA
QCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNv
cHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdz
IGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJz
ZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAg
ICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBz
dGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMw
MzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVy
cnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAg
ICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9
CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rp
bmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+
CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7Cisg
ICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRN
b2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBt
X2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2Rp
bmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUg
fTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50
ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLjQ4ZWQ3YzUwZTQ1
OWVmNjc0YTZiZWNmZDlhMDRkM2M5YWFmODJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29u
dGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBz
cmNSZWN0LnNpemUoKSkKQEAgLTYzLDcgKzYzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYK
ICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4
dCk7CkBAIC03NCwxNiArNzQsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBUaGVt
ZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZs
b2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAv
LyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZl
ci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVm
ZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNy
Y1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBVTlVTRURf
UEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBVTlVTRURfUEFS
QU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURf
UEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYxM2Y0Njk2MzFmYjZlZjRk
NTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEyYTBjZDYxM2Q4MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVy
cmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCBkMGZmNjdlZmUxYTZj
MmZiOWQyY2VkYzc1ODc1ZmQ4ODBlNmI1NzMxLi4zOWQ0NGI4NjQ1N2JjMjIwMjhkNjc3YmJkZGE3
NGEzOTkyZTJhNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVh
ck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRl
YWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93
TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VC
dQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXll
ck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSks
IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0
LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAg
LTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAg
ICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFk
b3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwog
ICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBT
ZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3Ig
PT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwg
JiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9k
ZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNl
KSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1D
b250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVz
dFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0
LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwot
ICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJh
bnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3Jt
Q29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwg
aGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50
YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3Ig
cGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAg
ICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qu
d2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgp
LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVj
dC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBz
dXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9P
cGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0
KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzlj
N2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNk
MjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZv
aWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVy
cG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1Bh
dHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRT
aXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
Owordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJh
d1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29u
c3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYw
YmM0M2QyYWIuLmNiZWMwNmU2NjBlMmEzZDYwNmEzMmJjODExMWMxMjc2ZjEwMDBmMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAg
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1D
b250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZjFiMDJk
MzRhYjJmZjI5YWRjZmI4NzQzYzg5NGMxZTQ2MDhiNjczYi4uMmY1MTlkNDU0NzdkNDM3OThiNzU5
YTgxNTM0NjJjOTgzNTM3Y2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
QEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdl
OjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5l
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQwYmY5
YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNkNmJi
NzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1p
bWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJ
bWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0lt
YWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2Mzkw
MTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdl
dCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJI
ZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1h
Z2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdl
dCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAgYWRq
dXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7CiAj
ZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUp
OworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9u
IGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgp
KTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAg
ICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1
bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdp
bGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9y
aWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQg
Zm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAg
ICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0Lngo
KSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVz
dGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9pZCBw
YXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIG1f
aW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlv
bihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsg
ZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0x
KTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0
LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFm
YTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMg
KzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNl
Ci0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2
NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewog
ICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29w
eSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNv
cHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JS
ZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUmVm
UHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZkNWQ5
ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IocGl4
ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
Ml0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTExZTdi
OGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYzYWE0
YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVu
Y2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAo
bV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZm
ZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VS
ZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1NGY2
NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNlODVl
ZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLjk0MDIwNTM1MzMxY2Y5ZmU2Mjc2MTJh
NzNhYTAzYmMzYmIwMWZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0
byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMTEgKzQ5Niw3IEBAIERyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rl
c3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0jaWYgVVNFKENH
KQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSNlbmRpZgot
ICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQogewogI2lmICFVU0UoQ0cpCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKQEAgLTUxMiw3ICs1
MDgsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICNlbmRpZgpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiB9CiAjZW5k
aWYKIAotRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK0RyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRlcm4pCiAgICAgLCBtX2ltYWdl
KGltYWdlKQogICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pCkBAIC01
MzYsMTQgKzUzMiwxMyBAQCBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlYwogICAgICwgbV9kZXN0aW5h
dGlvbihkZXN0UmVjdCkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX3NwYWNpbmcoc3Bh
Y2luZykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCisgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0KIAogdm9pZCBEcmF3UGF0dGVybjo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd1BhdHRlcm4o
bV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNm
b3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3AsIG1fYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1f
cGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMpOwogfQogCiBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1Bh
dHRlcm4mIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA4YmNjZTE5
YjI0ZTFmZjVmNjViNmJmNDhjOTQxNzBjOWI3ZTAxZmI4Li5jZjNjZjkyOTMwYzQ2ZGJlNmM3Mjk3
YTVhOTFjZTI1MTI1Y2JhNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTY0MSwxNiArNjQxLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8
IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTY2MiwxOSArNjYyLDE1IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UmVj
dCBtX3NyY1JlY3Q7Ci0jaWYgVVNFKENHKQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7Ci0g
ICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwotI2VuZGlmCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAj
ZW5kaWYKIAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERy
YXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgY29uc3QgSW1hZ2Um
IGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQpAQCAtNjg1LDcgKzY4MSw3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
Y2luZzsgfQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAg
IERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNjk3LDggKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb247CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAgIEZsb2F0U2l6ZSBtX3Nw
YWNpbmc7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVu
ZE1vZGU7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAogLy8gSXMg
RHJhd2luZ0l0ZW0gYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNwYXJlbmN5IGxheWVyIGlz
IGltcGxpY2l0bHkgdGhlIGNsaXAgYm91bmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGU3OTdhN2ZkNDI4NzE4ZDM5NzA4MDI1NGEyZmZkNjE2MjNjYTY1
NGUuLmUyMGYzZWQxM2NiNmU1NWY3ODJlOGM5YWRjMTMwODcyZGU2ZWYxMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIElt
YWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0CiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
Cit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJ
dGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAjZW5kaWYK
IAotdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChu
ZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
MzE3OThjMWIyZDQ3NDM3NDk4ZmMzMTVhYzE2M2QzNWU0Njc1MzdmMC4uNTE2ZDRkZjhjN2ZkOWVi
NWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC05Miw5ICs5Miw5IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNlbmRpZgot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZWYz
YWQ5MDcxZWU4YzQ1MGQ5MWY5YmY5ODI0ODU1NTgwZTFmNDE3Li5lNGQ3Mjk1N2IwY2RlODdmMTdm
Zjk3MmZjYjcxOTdjOTU5ZjMzMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBG
RUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VP
dmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgeyBDb21w
b3NpdGVTb3VyY2VPdmVyLCBtX21vZGUgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApp
bmRleCA1MzIzYmVkYWE1NzBhNGIyMTI0MTY4YzQ2NWI0OTUxYzA0MWY0MzlhLi5kNTZkYjQwYzA0
OTRkYjE3M2YwMDE3NDRiNWMxYmM0ZDJjMWE1YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcw
LDggKzI3MCw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNv
dXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
MlJlY3QpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
UmVjdCksIHsgQ29tcG9zaXRlU291cmNlSW4gfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMDJlMjhlZGNkNDA3ZmRm
ZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5Li4wODJmMTk0NGU5NDU5NmVjNGQ2OTEyMDZiZDQ1YjQx
MjI1MTE5NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04ODUsMTUgKzg4NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3Np
dGVDb3B5KTsKLSAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQotICAgICAgICBw
YWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsK
LQogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1w
bGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNv
bnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFnZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgp
LCBwYWludGluZ09wdGlvbnMpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFn
ZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCB7IENvbXBvc2l0ZUNvcHksIG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCA/IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA6IEltYWdlT3JpZW50
YXRpb24oKSB9KTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDUwZTBj
M2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMuLjMzNjNjZDg3ZWRjMTI0ZWFmNDk3
MjEzMjlmZDlmY2JjMWE4Y2QxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksMTQgKzU0OSwxNCBAQCBJbWFn
ZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3
VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1
Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRh
dGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4geworICAgIHN0cnVjdCBEcmF3TmF0aXZl
SW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdOYXRp
dmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVy
YXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4o
KS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1Pigp
LCBhcmc8Nj4oKSwgYXJnPDc+KCksIGFyZzw4PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBh
cmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTY3
LDE3ICs1NjcsMTcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAgICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSkpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBG
bG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZT4geworICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3Bl
cmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFnZVBh
aW50aW5nT3B0aW9ucz4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3UGF0dGVybigpID0gZGVmYXVs
dDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxh
eWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4o
Y29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJn
PDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSk7
CisgICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXll
ciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4o
KSwgYXJnPDU+KCksIGFyZzw2PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChU
ZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1
cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBl
bmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShp
bWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVD
b21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUo
KSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMp
KTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCBkYmQ2NzIzMTQ4NGY5
MTg3MjFjYzBiZmRkODYzODVlN2ZlNWI4OWY5Li44MjYwYzQ4YWQ3OTg2ODRjNmU1N2MxZDY2ZGZi
ZTZkMDEwMWMxZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3
UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlLCBX
ZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJu
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkNv
bXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUgPSBXZWJDb3JlOjpCbGVuZE1vZGU6
Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4o
V2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0xpbmUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKaW5kZXggZDdhMGU5ODM5NzE4YzMx
MGVhMWYyNTlhNWFmNGU0MWFlZTgyYzUxYy4uOWFlMmE3MmU5MGY5NWI5YWFhNDY0ODc4OGM2ZjI3
YTE3N2M4ZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKQEAgLTc2NSw3ICs3NjUsNyBAQCB2
b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
Y29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQogCiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9h
dCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJ
Q0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFk
b3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBiaXRt
YXBTaXplKGltYWdlKTsKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKQEAg
LTc3NCwxMCArNzc0LDEwIEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkp
OwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQo
KSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5k
TW9kZSwgb3JpZW50YXRpb24sIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGdsb2JhbEFscGhh
LCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2
aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBn
bG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9i
YWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZl
SW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRt
YXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFnZS0+R2V0U2l6ZSgpOwogCkBA
IC04MDksMTYgKzgwOSwxNiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZwogICAgIGlmICghc2hv
dWxkVXNlU3ViaW1hZ2UgJiYgY3VyckhlaWdodCA8IGltYWdlU2l6ZS5oZWlnaHQoKSkKICAgICAg
ICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSAq
IGN1cnJIZWlnaHQgLyBpbWFnZVNpemUuaGVpZ2h0KCkpOwogCi0gICAgU3RhdGU6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUpOworICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBv
cHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAg
Ly8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgog
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVz
dFJlY3QueSgpKTsKICAgICBjb250ZXh0LT5TZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBh
ZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3Jp
ZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBjb25jYXRDVE0o
cGxhdGZvcm1Db250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3Rl
ZERlc3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNI
ZWlnaHQoKSkgeworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSkgeworICAgICAgICBjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25z
Lm9yaWVudGF0aW9uKCkudHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXpl
KCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdo
dCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQn
cyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBv
ZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxh
eW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KICAgICAgICAgICAgIGFk
anVzdGVkRGVzdFJlY3QgPSBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVk
RGVzdFJlY3QueSgpLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpLCBhZGp1c3RlZERlc3RSZWN0
LndpZHRoKCkpOwpAQCAtODQyLDE0ICs4NDIsMTQgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWcK
ICAgICAgICAgY29udGV4dC0+U2V0VHJhbnNmb3JtKGN0bSk7CiB9CiAKLXZvaWQgZHJhd1BhdHRl
cm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCog
dGlsZUltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4o
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogdGls
ZUltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQucmVu
ZGVyVGFyZ2V0KCk7CiAgICAgUGxhdGZvcm1Db250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBs
YXRmb3JtQ29udGV4dCk7CiAKICAgICBjbGlwKHBsYXRmb3JtQ29udGV4dCwgZGVzdFJlY3QpOwog
Ci0gICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBv
c2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRp
b24ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogCiAgICAgYXV0byBiaXRtYXBCcnVzaFByb3BlcnRpZXMgPSBEMkQxOjpC
aXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKICAgICBiaXRtYXBCcnVzaFByb3BlcnRpZXMuZXh0ZW5k
TW9kZVggPSBEMkQxX0VYVEVORF9NT0RFX1dSQVA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKaW5kZXggMDZm
NjU2MThlYjI5MDdjODVlMTRmNjBmY2E2MzNiMDg4NjliMmU4YS4uYmNjZjY1NjlkODhjNTRhMTNm
Y2FmMDcyMmE5MGIzODgzMWI4ZDk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtMTI3LDEwICsx
MjcsMTAgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwg
Y29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRl
JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1
bnNpZ25lZCBzaG9ydD4mIGdseXBocywgY29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFk
dmFuY2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERy
YXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwog
Ci12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRt
YXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCos
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUm
KTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFC
aXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3Qg
U2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBj
b25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZv
aWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29u
c3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlKTsKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lD
Qml0bWFwKiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpOwogCiB2b2lkIGRyYXdXaXRob3V0U2hhZG93KFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6
RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKTsKIHZvaWQg
ZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggNmJiNjQ0YTJiNjVlMjM0YzE1ZmUzY2ZmZjllYjczOTE5
NDRkNDFjMS4uNDQyNWZkMjZhYmU4NTQ1MWQyYzAzMmYzNmEyNmE1N2VlMzFlMmIwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCA0ZTRk
ODhkZTQ0NDFmZTNkNjU2N2M2ZThhOGYyOGE1NWU4MzA2ODdiLi5jNjAzODUxY2Q1MzUwNjQ1NmVj
YjdmMGM5MmEwNDM4MDkyYzgxYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikKIHsKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9E
cmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9T
Lm1tCmluZGV4IDE0N2MyZDBiNWIzZmU5ODExMGIwZmMzYWM4MWY2YmJkNzZmYThhZGQuLjUwMjc5
OTBjZTU1ZTQ2MWIyZGQ4MmI5YzMyOWU5ZDlhMzJmODBlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtOTYsNyArOTYsNyBAQCBEcmFnSW1hZ2VS
ZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbgogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNv
bnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXpl
LmhlaWdodCk7CiAgICAgICAgIGNvbnRleHQuc2NhbGUoeyBhZGp1c3RlZEltYWdlU2NhbGUsIC1h
ZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbikpOworICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgeyBvcmllbnRhdGlvbiB9
KTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1hZ2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5MDFj
NDExMGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYwNDFjYjMzLi43NDgyY2UwMjBjOTQxMGY1NmVi
MDYwNGYzYzUzYmY5YjFiZDI2Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjbwogCiAgICAgICAgICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50
aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2Rl
Rm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICAgICAgICAgIGF1dG8gZHJhd1Jl
c3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgp
LCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVT
aXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3Np
dGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBj
b250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlv
dXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBn
ZW9tZXRyeS5zcGFjZVNpemUoKSwgeyBjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwg
ZGVjb2RpbmdNb2RlLCBpbnRlcnBvbGF0aW9uIH0pOwogICAgICAgICAgICAgaWYgKGRyYXdSZXN1
bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoYmdJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKTsKICAgICAgICAgICAgICAgICBi
Z0ltYWdlLT5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygq
dGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcAppbmRleCA5MTNiYjQxM2I5NDJmMWUwNjI2Y2Y1OGMxNDVhYjMyNmI3MWNjMjk2Li43
YWMwNGI4YmE0ZjQxNTEzYjNmY2JhZjE5MzFiY2Y0NDgwNWM5NDhkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogICAgICAgICByZXR1cm47CiAKICAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1
YWxpdHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRp
b24gfSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IGY1MWUyZmViMzdlMWZjZjBm
ZDBlNzkxYWU2NGYwM2VlODhhMmE3YzguLjM5MzVjYjQ1YTE0ZTZkNzY4NzlhNWQ3MThlNTBhNDA1
ZjM5NDhhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAt
NDY5LDcgKzQ2OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAg
ICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6
ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0
aCwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRo
KTsKIAotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RU
b0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdl
U2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMo
TGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VT
Y2FsZUZhY3RvciksIHsgaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgICAgICAgICAgICAgIGVy
cm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNjMyLDcgKzYzMiw3
IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0CiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdl
PigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygpKTsKIAogICAgIGF1dG8gZGVj
b2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsK
LSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1n
LCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
OjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9u
KSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltZywgcmVjdCwgeyBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29k
aW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uIH0pOwogICAgIGlmIChk
cmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAg
ICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5j
RGVjb2RpbmcoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCAwZGZlMjgyNzY0ZjQwOGI2MjBiZWY1ZDlm
NThlODhhNmNjNzZjMDg0Li40ZmU4NTg2MjVjOTI5ZDgwYmVjYWZlYTY2ZjA2NGUzNDIxODEyNWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1
Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwog
ICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9u
ID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxp
Z25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRp
b24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdl
T3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDQ0Y2IyMDAxYzBiZThhYjQyNzc2ZjU1NzU2ZTE0NDAz
NzVjMDE3YmEuLmE0MmNlNmVjMmQ2OTM5YzAwMTYxZjE3OWJlMjY0NGUxMjQyOTI0N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTIyNzgsNyArMjI3
OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0
LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25l
ZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggNWM1NmI2OTk5NWJj
OTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMzOGY1Mi4uMDBhYmMwZDEyNzNiMGZlY2UwMTM3N2VlOWI5
OGNhYzdkNWY4NmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNv
bnN0CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90
aGluZzsKQEAgLTIwMiw3ICsyMDIsNyBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdG
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogCiAgICAg
ZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQoaW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAg
IEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNy
YywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXco
Y29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBvcHRpb25zKTsKIAogICAgIHNldEltYWdlT2Jz
ZXJ2ZXIob2JzZXJ2ZXIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMjEsNyArMjIxLDcgQEAg
TmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0
IEdyYXBoaWNzQ29udGV4dCopCiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0
ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250
ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7
CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgLy8g
RklYTUU6IFdLKEJ1ZyAxMTM2NTcpOiBXZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3Jl
IGhlcmUuCiAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgTmF0aXZl
SW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFy
Z2V0Q29udGV4dCkKICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCBwbGF0Zm9ybUNvbnRleHQo
bmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRl
eHQoJnBsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250
ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAotICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJl
Y3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcobG9jYWxD
b250ZXh0LCByZWN0KCksIHJlY3QoKSk7CiAKICAgICByZXR1cm4gbmF0aXZlSW1hZ2U7CiB9CiAj
ZW5kaWYKIAogdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNv
bnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2Nh
bGUoY29udGFpbmVyWm9vbSk7CkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNp
emUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFjZVNSR0IsIGNvbnRleHQpOwogICAgIGlmICghYnVmZmVy
KSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47Ci0gICAgZHJh
d0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVy
Wm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5l
clJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBkcmF3
Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJa
b29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVy
UmVjdCk7CiAgICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVm
ZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZv
aWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxl
KDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdo
dCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGlt
YWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxl
ZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKKyAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVj
dCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9
CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWROb3RoaW5nOwpAQCAtMjk4LDExICsyOTgsMTEgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMK
ICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0
aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBjb250
ZXh0LmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7CiAKICAgICBmbG9hdCBhbHBoYSA9
IGNvbnRleHQuYWxwaGEoKTsKLSAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVu
Y3lMYXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2Rl
ICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsKKyAgICBib29sIGNvbXBvc2l0aW5n
UmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSAh
PSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IG9wdGlvbnMuYmxlbmRNb2RlKCkgIT0gQmxlbmRNb2Rl
OjpOb3JtYWwgfHwgYWxwaGEgPCAxOwogICAgIGlmIChjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFs
cGhhKTsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaAppbmRleCAwNzU0MjRmYzc1ZGJkZTA5OTE3MGZmM2Y2ZWJhNmU2YzcxZmQyZTE1Li42
MTQ1ODUzNDAzYjQ3N2FlYzcxMWM4ZGQ2MmY4ODM2NTQ5OWUwMmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtOTQsMTAgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0YXJ0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCiAgICAgZXhwbGljaXQgU1ZHSW1hZ2Uo
SW1hZ2VPYnNlcnZlciYpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pIGZpbmFsOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJa
b29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25z
dCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiwgQmxlbmRNb2RlKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29u
dGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21l
bnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWlu
ZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVS
TCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgUmVmUHRy
PFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVtZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGNmOGNj
M2U1Y2VjOGU4MTJkZTY5YTlmNDRhZGJiN2IwNWM1NWMwMDUuLmQ3MGE2NDBjNmEwNDkxZTdlMTY3
Zjk0YzE4MGUyNzkxYTMxZWFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtMzQsMTYgKzM0LDE1IEBAIEZsb2F0
U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0
U2l6ZShyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXplKSk7CiB9CiAKLUltYWdlRHJh
d1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VG
b3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWlu
ZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZy
YWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAg
ICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNp
emUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9pbWFnZS0+ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5l
clpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBw
aGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9p
bWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBt
X2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKIE5hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShj
b25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCmluZGV4IDg2OWQwOTcxYzVi
MmZlNWQ0OTUxZGQ2MDM0MGFlMzYzY2Y3NzZmMDQuLjU3YjIwNGQ5ODNmYjA3YjFhN2VkNjFhMWFm
ZWI0ZWI3ZjhhYTBkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICAgICAg
bV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJp
bnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAotICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA1NTJlZjFhOGZlMmQ1NTU2NDNhZTk1YzU0NWE2MDVjZjc1YTdiMzVjLi41OGE5ZTc4OTg3Yzlj
NGE0MjNiMmQ5YzQ0OWQ4Y2EwMDM3ZDMxZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjYxOCw3ICsyNjE4LDcgQEAg
c3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEludGUKICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgcmVu
ZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJ
bWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNp
emUuaGVpZ2h0KCkpKSwgeyByZW5kZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAg
aW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377107</attachid>
            <date>2019-08-23 00:32:12 -0700</date>
            <delta_ts>2019-08-23 00:48:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823003211.patch</filename>
            <type>text/plain</type>
            <size>157882</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uYmE2ZjkxMDllMDk1MjAzN2Q4MjgyOWI3MDYxMjFk
ZGU0YWQzMzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxOS0wOC0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJu
OjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRl
cm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVu
dCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGUzNTFkMmY3
Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi4yOWIxZjMwYWYwNzJkOTQzMmNkMGI4YmFj
NWEwNjJlZjIwM2Y4YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
IGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUg
SW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIElt
YWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24p
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFj
ZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcg
QEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJB
MjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2
OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVF
NTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQx
Nyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhU
c1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2
MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAw
MTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5j
cHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8s
CkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8q
IEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVE
MDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgz
RjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2
YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQ
b2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09w
dGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsK
LQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBk
ZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09w
dGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
IH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBh
dXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEw
ICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRt
YXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBE
YXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5
SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNp
emUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAz
LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAg
PSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRp
bmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsK
IAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWlu
c0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFn
ZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3Np
dGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBu
b3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1h
Z2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJs
ZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRp
ZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAg
ICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0
ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBD
b2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBz
cmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAg
ICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
KSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwx
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1h
cCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQg
KzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCku
Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGlt
YWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4
YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJl
dHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQot
ICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0
IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9y
RHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
ZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAg
ICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZy
YW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAg
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xv
cjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5j
b2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAh
bV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAg
ICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYg
bV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVj
dCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5p
bmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFs
cGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3Ig
YXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2
NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAg
Q29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIElu
dFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRl
RGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdl
IG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNh
bGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxw
dHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
ICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRN
b2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1
YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3
MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21w
b3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsK
KworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7
CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8g
aW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
YWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlv
bnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAh
PSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBk
cmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0
ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5
MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9z
c2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODcz
NzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRl
c3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAg
ZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRl
c3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5z
aXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAog
dm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3Zp
ZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZv
cm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2Nzhk
NzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1f
cGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
aW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3
NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgx
NjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBl
N2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFn
ZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1Jl
Y3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQog
CiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlk
ZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9y
bWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0
aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3Bh
Y2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJj
MDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUx
M2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1
NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAg
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291
cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
KyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxl
LgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6
ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAg
ICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6
OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4
ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4
OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgog
fTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
bkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyAr
MzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1Njlh
ZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWVi
YzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpk
cmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwo
Y29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5
NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1
NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMz
MTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgs
MjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgo
KSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lk
dGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAg
dmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkp
OwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBz
Y2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7Cisg
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlv
bnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCku
aGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0
aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
U3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxv
YXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5z
Y2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2Rl
OjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0y
NTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0
aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24o
KSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUg
b3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBv
ZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVI
ZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0g
aFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBv
cCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlv
bigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUo
KTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRy
aW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAg
aW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4
MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4
YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEx
NiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdl
dEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90
U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZk
ZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpA
QCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNv
cHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdz
IGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJz
ZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAg
ICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBz
dGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMw
MzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVy
cnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAg
ICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9
CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rp
bmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+
CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7Cisg
ICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRN
b2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBt
X2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2Rp
bmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUg
fTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50
ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLjQ4ZWQ3YzUwZTQ1
OWVmNjc0YTZiZWNmZDlhMDRkM2M5YWFmODJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29u
dGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBz
cmNSZWN0LnNpemUoKSkKQEAgLTYzLDcgKzYzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYK
ICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4
dCk7CkBAIC03NCwxNiArNzQsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBUaGVt
ZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZs
b2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAv
LyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZl
ci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVm
ZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNy
Y1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBVTlVTRURf
UEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBVTlVTRURfUEFS
QU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURf
UEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYxM2Y0Njk2MzFmYjZlZjRk
NTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEyYTBjZDYxM2Q4MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVy
cmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCBkMGZmNjdlZmUxYTZj
MmZiOWQyY2VkYzc1ODc1ZmQ4ODBlNmI1NzMxLi4zOWQ0NGI4NjQ1N2JjMjIwMjhkNjc3YmJkZGE3
NGEzOTkyZTJhNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVh
ck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRl
YWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93
TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VC
dQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXll
ck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSks
IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0
LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAg
LTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAg
ICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFk
b3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwog
ICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBT
ZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3Ig
PT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwg
JiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9k
ZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNl
KSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1D
b250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVz
dFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0
LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwot
ICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJh
bnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3Jt
Q29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwg
aGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50
YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3Ig
cGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAg
ICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qu
d2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgp
LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVj
dC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBz
dXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9P
cGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0
KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzlj
N2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNk
MjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZv
aWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVy
cG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1Bh
dHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRT
aXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
Owordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJh
d1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29u
c3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYw
YmM0M2QyYWIuLmNiZWMwNmU2NjBlMmEzZDYwNmEzMmJjODExMWMxMjc2ZjEwMDBmMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAg
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1D
b250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZjFiMDJk
MzRhYjJmZjI5YWRjZmI4NzQzYzg5NGMxZTQ2MDhiNjczYi4uMmY1MTlkNDU0NzdkNDM3OThiNzU5
YTgxNTM0NjJjOTgzNTM3Y2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
QEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdl
OjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5l
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQwYmY5
YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNkNmJi
NzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1p
bWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJ
bWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0lt
YWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2Mzkw
MTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdl
dCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJI
ZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1h
Z2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdl
dCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAgYWRq
dXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7CiAj
ZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUp
OworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9u
IGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgp
KTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAg
ICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1
bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdp
bGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9y
aWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQg
Zm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAg
ICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0Lngo
KSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVz
dGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9pZCBw
YXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIG1f
aW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlv
bihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsg
ZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0x
KTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0
LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFm
YTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMg
KzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNl
Ci0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2
NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewog
ICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29w
eSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNv
cHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JS
ZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUmVm
UHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZkNWQ5
ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IocGl4
ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
Ml0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTExZTdi
OGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYzYWE0
YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVu
Y2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAo
bV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZm
ZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VS
ZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1NGY2
NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNlODVl
ZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLjk0MDIwNTM1MzMxY2Y5ZmU2Mjc2MTJh
NzNhYTAzYmMzYmIwMWZjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0
byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMTEgKzQ5Niw3IEBAIERyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rl
c3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0jaWYgVVNFKENH
KQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSNlbmRpZgot
ICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25z
KQogewogI2lmICFVU0UoQ0cpCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKQEAgLTUxMiw3ICs1
MDgsNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFw
cGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0
KTsKICNlbmRpZgpAQCAtNTI4LDcgKzUyNCw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiB9CiAjZW5k
aWYKIAotRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK0RyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRlcm4pCiAgICAgLCBtX2ltYWdl
KGltYWdlKQogICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pCkBAIC01
MzYsMTQgKzUzMiwxMyBAQCBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlYwogICAgICwgbV9kZXN0aW5h
dGlvbihkZXN0UmVjdCkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAgLCBtX3NwYWNpbmcoc3Bh
Y2luZykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCisgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0KIAogdm9pZCBEcmF3UGF0dGVybjo6YXBwbHkoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIGNvbnRleHQuZHJhd1BhdHRlcm4o
bV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNm
b3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3AsIG1fYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1f
cGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wdGlvbnMpOwogfQogCiBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1Bh
dHRlcm4mIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA4YmNjZTE5
YjI0ZTFmZjVmNjViNmJmNDhjOTQxNzBjOWI3ZTAxZmI4Li5jZjNjZjkyOTMwYzQ2ZGJlNmM3Mjk3
YTVhOTFjZTI1MTI1Y2JhNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTY0MSwxNiArNjQxLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8
IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1YmxpYyBEcmF3aW5nSXRl
bSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qg
b3ZlcnJpZGU7CiAKQEAgLTY2MiwxOSArNjYyLDE1IEBAIHByaXZhdGU6CiAgICAgRmxvYXRTaXpl
IG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UmVj
dCBtX3NyY1JlY3Q7Ci0jaWYgVVNFKENHKQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7Ci0g
ICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwotI2VuZGlmCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBt
X29yaWVudGF0aW9uOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAj
ZW5kaWYKIAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCisgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERy
YXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgY29uc3QgSW1hZ2Um
IGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQpAQCAtNjg1LDcgKzY4MSw3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Bh
Y2luZzsgfQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAg
IERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIApAQCAtNjk3LDggKzY5Myw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb247CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAgIEZsb2F0U2l6ZSBtX3Nw
YWNpbmc7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVu
ZE1vZGU7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKIAogLy8gSXMg
RHJhd2luZ0l0ZW0gYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNwYXJlbmN5IGxheWVyIGlz
IGltcGxpY2l0bHkgdGhlIGNsaXAgYm91bmRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCmluZGV4IGU3OTdhN2ZkNDI4NzE4ZDM5NzA4MDI1NGEyZmZkNjE2MjNjYTY1
NGUuLmUyMGYzZWQxM2NiNmU1NWY3ODJlOGM5YWRjMTMwODcyZGU2ZWYxMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyNywxNiArMTI3LDE2IEBAIElt
YWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0CiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
Cit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJ
dGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAjZW5kaWYK
IAotdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFw
cGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpKTsKKyAgICBE
cmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERy
YXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChu
ZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
MzE3OThjMWIyZDQ3NDM3NDk4ZmMzMTVhYzE2M2QzNWU0Njc1MzdmMC4uNTE2ZDRkZjhjN2ZkOWVi
NWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC05Miw5ICs5Miw5IEBAIHByaXZhdGU6CiAgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICNlbmRpZgot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAppbmRleCBiZWYz
YWQ5MDcxZWU4YzQ1MGQ5MWY5YmY5ODI0ODU1NTgwZTFmNDE3Li5lNGQ3Mjk1N2IwY2RlODdmMTdm
Zjk3MmZjYjcxOTdjOTU5ZjMzMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBG
RUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBm
aWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBkcmF3aW5nUmVnaW9u
T2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwotICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVTb3VyY2VP
dmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkp
LCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgeyBDb21w
b3NpdGVTb3VyY2VPdmVyLCBtX21vZGUgfSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApp
bmRleCA1MzIzYmVkYWE1NzBhNGIyMTI0MTY4YzQ2NWI0OTUxYzA0MWY0MzlhLi5kNTZkYjQwYzA0
OTRkYjE3M2YwMDE3NDRiNWMxYmM0ZDJjMWE1YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcApAQCAtMjcw
LDggKzI3MCw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBkZXN0aW5hdGlvblJlY3Qg
LSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNl
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbjIt
PmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNv
dXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdl
QnVmZmVyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlU291
cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
MlJlY3QpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBGbG9hdFJlY3Qoc291cmNl
UmVjdCksIHsgQ29tcG9zaXRlU291cmNlSW4gfSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBiMDJlMjhlZGNkNDA3ZmRm
ZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5Li4wODJmMTk0NGU5NDU5NmVjNGQ2OTEyMDZiZDQ1YjQx
MjI1MTE5NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCkBAIC04ODUsMTUgKzg4NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9ucyhDb21wb3Np
dGVDb3B5KTsKLSAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKQotICAgICAgICBw
YWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsK
LQogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3JlYXRlSW1hZ2UobV9zYW1w
bGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNv
bnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFnZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgp
LCBwYWludGluZ09wdGlvbnMpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFn
ZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCB7IENvbXBvc2l0ZUNvcHksIG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCA/IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlvbiA6IEltYWdlT3JpZW50
YXRpb24oKSB9KTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCmluZGV4IDUwZTBj
M2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMuLjFkMmFmNjlmZDZmYTc4M2YwZmMx
NjYxYTg2ODBjMmIxMDY4YzE2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksMTQgKzU0OSwxNCBAQCBJbWFn
ZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdAogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3
VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1
Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRh
dGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4geworICAgIHN0cnVjdCBEcmF3TmF0aXZl
SW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdOYXRp
dmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVy
YXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4o
KS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1Pigp
LCBhcmc8Nj4oKSwgYXJnPDc+KCksIGFyZzw4PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBh
cmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTY3
LDE3ICs1NjcsMTcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAgICAgVU5VU0VEX1BBUkFN
KGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgp
OwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBw
ZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90
PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhv
cHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENh
aXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWlu
dGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50
U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZT4geworICAgIHN0cnVjdCBEcmF3UGF0dGVybiBm
aW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJm
YWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBG
bG9hdFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3
UGF0dGVybigpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVy
YXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBD
YWlybzo6ZHJhd1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdl
dCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFy
Zzw2PigpLCBhcmc8Nz4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oY29udGV4
dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCks
IGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU4OCw3ICs1ODgs
NyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogCiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcp
OwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShz
dXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSk7CisgICAg
ICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJ
bnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApp
bmRleCBkYmQ2NzIzMTQ4NGY5MTg3MjFjYzBiZmRkODYzODVlN2ZlNWI4OWY5Li44MjYwYzQ4YWQ3
OTg2ODRjNmU1N2MxZDY2ZGZiZTZkMDEwMWMxZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Nyw4ICs2Nyw4IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJ
bWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2Vi
Q29yZTo6QmxlbmRNb2RlLCBXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUgPSBX
ZWJDb3JlOjpCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKaW5k
ZXggZDdhMGU5ODM5NzE4YzMxMGVhMWYyNTlhNWFmNGU0MWFlZTgyYzUxYy4uOWFlMmE3MmU5MGY5
NWI5YWFhNDY0ODc4OGM2ZjI3YTE3N2M4ZmRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAKQEAg
LTc2NSw3ICs3NjUsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
IHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbAogfQogCiAKLXZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElX
SUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2lu
YWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2Jh
bEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBuYXRp
dmVJbWFnZVNpemUgPSBiaXRtYXBTaXplKGltYWdlKTsKICAgICBDT01QdHI8SUQyRDFCaXRtYXA+
IGRldmljZUJpdG1hcDsKQEAgLTc3NCwxMCArNzc0LDEwIEBAIHZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGlt
YWdlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFwU2l6ZShk
ZXZpY2VCaXRtYXAuZ2V0KCkpOwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQs
IGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9z
aXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIGltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd05hdGl2ZUltYWdlKHBs
YXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJ
RDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25R
dWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRl
KQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3Jt
Q29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFn
ZS0+R2V0U2l6ZSgpOwogCkBAIC04MDksMTYgKzgwOSwxNiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCog
aW1hZwogICAgIGlmICghc2hvdWxkVXNlU3ViaW1hZ2UgJiYgY3VyckhlaWdodCA8IGltYWdlU2l6
ZS5oZWlnaHQoKSkKICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRIZWlnaHQoYWRqdXN0ZWRE
ZXN0UmVjdC5oZWlnaHQoKSAqIGN1cnJIZWlnaHQgLyBpbWFnZVNpemUuaGVpZ2h0KCkpOwogCi0g
ICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24o
cGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxl
bmRNb2RlKCkpOwogCiAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4g
dG8gYmUgYXQgKDAsIDApLgogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoYWRqdXN0ZWREZXN0UmVj
dC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBjb250ZXh0LT5TZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQo
KSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewot
ICAgICAgICBjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1G
cm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50
YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9u
KCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgeworICAgICAgICBjb25jYXRDVE0ocGxhdGZv
cm1Db250ZXh0LCBvcHRpb25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3JtRnJvbURlZmF1bHQoYWRq
dXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24o
KS51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24g
cmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9y
IHRoZSBvcmllbnRhdGlvbiBvZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMg
bmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVy
ZS4KICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3QgPSBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0
UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgp
LCBhZGp1c3RlZERlc3RSZWN0LndpZHRoKCkpOwpAQCAtODQyLDE0ICs4NDIsMTQgQEAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
SUQyRDFCaXRtYXAqIGltYWcKICAgICAgICAgY29udGV4dC0+U2V0VHJhbnNmb3JtKGN0bSk7CiB9
CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29u
dGV4dCwgSVdJQ0JpdG1hcCogdGlsZUltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
K3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4
dCwgSVdJQ0JpdG1hcCogdGlsZUltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIGNvbnRleHQgPSBw
bGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCk7CiAgICAgUGxhdGZvcm1Db250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKHBsYXRmb3JtQ29udGV4dCk7CiAKICAgICBjbGlwKHBsYXRmb3JtQ29u
dGV4dCwgZGVzdFJlY3QpOwogCi0gICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0
Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIFN0YXRlOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9w
ZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgYXV0byBiaXRtYXBCcnVzaFBy
b3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsKICAgICBiaXRtYXBCcnVz
aFByb3BlcnRpZXMuZXh0ZW5kTW9kZVggPSBEMkQxX0VYVEVORF9NT0RFX1dSQVA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmgKaW5kZXggMDZmNjU2MThlYjI5MDdjODVlMTRmNjBmY2E2MzNiMDg4NjliMmU4YS4u
YmNjZjY1NjlkODhjNTRhMTNmY2FmMDcyMmE5MGIzODgzMWI4ZDk0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlv
bnMuaApAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYs
IGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZvbnQmLCBkb3Vi
bGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywgY29uc3QgVmVjdG9yPGZs
b2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdSSVRFX0dMWVBIX09GRlNF
VD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBT
aGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRv
d1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYs
IElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwg
Y29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJhd1BhdGgoUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3Qg
U2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBJV0lDQml0bWFwKiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiB2b2lkIGRyYXdXaXRob3V0
U2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJh
d0NvbW1hbmRzKTsKIHZvaWQgZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25z
dCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdDb21tYW5kcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXggNmJiNjQ0YTJiNjVlMjM0
YzE1ZmUzY2ZmZjllYjczOTE5NDRkNDFjMS4uNDQyNWZkMjZhYmU4NTQ1MWQyYzAzMmYzNmEyNmE1
N2VlMzFlMmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaApAQCAtNzEs
OCArNzEsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVS
dWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVj
dDJELmNwcAppbmRleCA0ZTRkODhkZTQ0NDFmZTNkNjU2N2M2ZThhOGYyOGE1NWU4MzA2ODdiLi5j
NjAzODUxY2Q1MzUwNjQ1NmVjYjdmMGM5MmEwNDM4MDkyYzgxYTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGly
ZWN0MkQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBDb2xv
cigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKIHsKICAgICBhdXRvIHBsYXRmb3JtQ29udGV4
dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IDE0N2MyZDBiNWIzZmU5ODExMGIwZmMzYWM4MWY2
YmJkNzZmYThhZGQuLjUwMjc5OTBjZTU1ZTQ2MWIyZGQ4MmI5YzMyOWU5ZDlhMzJmODBlOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQpAQCAtOTYsNyAr
OTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFn
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbgogICAgICAgICBHcmFwaGljc0NvbnRleHQg
Y29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7CiAgICAgICAgIGNvbnRleHQuc2NhbGUoeyBhZGp1
c3RlZEltYWdlU2NhbGUsIC1hZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0gICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmll
bnRhdGlvbikpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQo
KSwgeyBvcmllbnRhdGlvbiB9KTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1h
Z2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAppbmRleCA5MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3YjkzZmFhZjYwNDFjYjMzLi43
NDgyY2UwMjBjOTQxMGY1NmViMDYwNGYzYzUzYmY5YjFiZDI2Yzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTk1NSw3ICs5
NTUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVk
KGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgICAgICAgICBhdXRvIGludGVy
cG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsICZi
Z0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGF1dG8gZGVjb2RpbmdN
b2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICAg
ICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBn
ZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2Uo
KSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAgICBh
dXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnku
ZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9t
ZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgeyBjb21wb3NpdGVPcCwgYmdM
YXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBpbnRlcnBvbGF0aW9uIH0pOwogICAgICAg
ICAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rp
bmcpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmdJbWFnZS0+aXNDYWNoZWRJbWFnZSgpKTsK
ICAgICAgICAgICAgICAgICBiZ0ltYWdlLT5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5n
Rm9yQXN5bmNEZWNvZGluZygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA5MTNiYjQxM2I5NDJmMWUwNjI2Y2Y1OGMx
NDVhYjMyNmI3MWNjMjk2Li43YWMwNGI4YmE0ZjQxNTEzYjNmY2JhZjE5MzFiY2Y0NDgwNWM5NDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWlu
dFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dAogICAgICAg
ICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hv
b3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZpbWFnZSwgYWxpZ25lZFJl
Y3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOwor
ICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0
aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4
IGY1MWUyZmViMzdlMWZjZjBmZDBlNzkxYWU2NGYwM2VlODhhMmE3YzguLjM5MzVjYjQ1YTE0ZTZk
NzY4NzlhNWQ3MThlNTBhNDA1ZjM5NDhhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50
UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
CiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdl
T2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNz
aW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3Np
bmdJbWFnZUJvcmRlcldpZHRoKTsKIAotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdl
KCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsg
aW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgaW1hZ2VPcmllbnRh
dGlvbigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBp
bWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIHsgaW1hZ2VPcmllbnRhdGlvbigpIH0pOwog
ICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
IApAQCAtNjMyLDcgKzYzMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJ
bnRvUmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0CiAgICAgICAgIGRv
d25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhzZXR0aW5ncygp
KTsKIAogICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCpp
bWFnZSwgcGFpbnRJbmZvKTsKLSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4
dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlv
bigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNv
bnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgeyBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0
aW9uIH0pOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVz
dERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xp
ZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCAwZGZlMjgy
NzY0ZjQwOGI2MjBiZWY1ZDlmNThlODhhNmNjNzZjMDg0Li40ZmU4NTg2MjVjOTI5ZDgwYmVjYWZl
YTY2ZjA2NGUzNDIxODEyNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFJl
bmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQbwogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwg
KmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0
aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFs
aWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAog
Q3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpnZXRDdXJzb3IoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29yKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDQ0Y2IyMDAxYzBiZThh
YjQyNzc2ZjU1NzU2ZTE0NDAzNzVjMDE3YmEuLmE0MmNlNmVjMmQ2OTM5YzAwMTYxZjE3OWJlMjY0
NGUxMjQyOTI0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNo
b3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsCiAgICAgaWYg
KGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUGx1Z2luUmVjdC5oZWln
aHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdl
KCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAg
IGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
aW5kZXggNWM1NmI2OTk5NWJjOTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMzOGY1Mi4uMDBhYmMwZDEy
NzNiMGZlY2UwMTM3N2VlOWI5OGNhYzdkNWY4NmVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgSW50U2l6ZSBTVkdJbWFnZTo6
Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB9CiAKIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJh
d0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSBj
b250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFn
bWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTIwMiw3ICsyMDIsNyBAQCBJbWFnZURyYXdSZXN1
bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdAogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQoaW5pdGlhbEZy
YWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQs
IGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBvcHRpb25zKTsK
IAogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0yMjEsNyArMjIxLDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiAgICAgaWYgKCFidWZmZXIpIC8v
IGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCBy
ZWN0KCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcpOiBXZSBzaG91bGQgdXNlIERv
bnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1ZmZlci0+Y29weUltYWdlKENv
cHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwpAQCAtMjQ3LDE0
ICsyNDcsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKICAgICBQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCBwbGF0Zm9ybUNvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkpOwogICAgIEdyYXBoaWNz
Q29udGV4dCBsb2NhbENvbnRleHQoJnBsYXRmb3JtQ29udGV4dCwgR3JhcGhpY3NDb250ZXh0OjpC
aXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAotICAgIGRyYXcobG9jYWxD
b250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUp
OworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSk7CiAKICAgICByZXR1cm4g
bmF0aXZlSW1hZ2U7CiB9CiAjZW5kaWYKIAogdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JD
b250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGNvbnRh
aW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50
VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVkQ29udGFpbmVy
UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwogICAgIHpvb21l
ZENvbnRhaW5lclJlY3Quc2NhbGUoY29udGFpbmVyWm9vbSk7CkBAIC0yNzEsNyArMjcxLDcgQEAg
dm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50
U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFjZVNSR0IsIGNvbnRleHQp
OwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAg
ICByZXR1cm47Ci0gICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFp
bmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNp
emUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6
Tm9ybWFsKTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWlu
ZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6
ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CiAgICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1h
c2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKQEAgLTI4
NiwxMCArMjg2LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgdW5zY2FsZWRQYXR0
ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIDEgLyBpbWFn
ZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1h
c2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2Fs
ZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0
UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjk4LDExICsyOTgsMTEgQEAgSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWMKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5k
TW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7CiAK
ICAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKLSAgICBib29sIGNvbXBvc2l0aW5n
UmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsKKyAg
ICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IG9wdGlvbnMuY29t
cG9zaXRlT3BlcmF0b3IoKSAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IG9wdGlvbnMuYmxlbmRN
b2RlKCkgIT0gQmxlbmRNb2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOwogICAgIGlmIChjb21wb3Np
dGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKGFscGhhKTsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVy
YXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCAwNzU0MjRmYzc1ZGJkZTA5OTE3MGZmM2Y2
ZWJhNmU2YzcxZmQyZTE1Li42MTQ1ODUzNDAzYjQ3N2FlYzcxMWM4ZGQ2MmY4ODM2NTQ5OWUwMmQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtOTQsMTAgKzk0LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCiAgICAg
ZXhwbGljaXQgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9y
Q29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXpl
LCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBj
b250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAotICAgICAgICBDb21wb3NpdGVPcGVyYXRv
ciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHRvUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsK
KyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3Qg
VVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwm
IGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCiAgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwCmluZGV4IGNmOGNjM2U1Y2VjOGU4MTJkZTY5YTlmNDRhZGJiN2IwNWM1NWMwMDUuLmQ3
MGE2NDBjNmEwNDkxZTdlMTY3Zjk0YzE4MGUyNzkxYTMxZWFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcApAQCAtMzQs
MTYgKzM0LDE1IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5lcjo6c2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6ZShzY2FsZWRDb250YWluZXJTaXpl
KSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURy
YXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIG1faW1h
Z2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5l
clpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlKTsKKyAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250
ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRV
UkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFNWR0ltYWdlRm9yQ29u
dGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWlu
ZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBzcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGRzdFJlY3QsIGJs
ZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29udGV4dCwg
bV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBz
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgZHN0UmVjdCwgb3B0aW9u
cyk7CiB9CiAKIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
CmluZGV4IDg2OWQwOTcxYzViMmZlNWQ0OTUxZGQ2MDM0MGFlMzYzY2Y3NzZmMDQuLjU3YjIwNGQ5
ODNmYjA3YjFhN2VkNjFhMWFmZWI0ZWI3ZjhhYTBkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC01Myw5ICs1Myw5IEBA
IHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50
cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAgIH0KIAot
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29k
aW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAotICAgIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAg
ICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA1NTJlZjFhOGZlMmQ1NTU2NDNhZTk1YzU0NWE2MDVjZjc1YTdi
MzVjLi5kMWZlZmM2ZTgzZDYxMzEzYjFiY2MxYzNhMTdlNDYzMWEwNjQ4OWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
MjYxOCw3ICsyNjE4LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlvbkluZm9ybWF0aW9uKFdl
YlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGUKICAgICBpZiAoIWdyYXBo
aWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBT
aXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICBncmFw
aGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRtYXBTaXpl
LndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCB7IHJlbmRlckltYWdlLmltYWdlT3JpZW50
YXRpb24oKSB9KTsKICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFwOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377108</attachid>
            <date>2019-08-23 00:48:42 -0700</date>
            <delta_ts>2019-08-23 01:10:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823004841.patch</filename>
            <type>text/plain</type>
            <size>157848</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uYmE2ZjkxMDllMDk1MjAzN2Q4MjgyOWI3MDYxMjFk
ZGU0YWQzMzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAxOS0wOC0yMiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6
YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJu
OjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRl
cm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
cmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3
UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
cmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVu
dCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGUzNTFkMmY3
Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi4yOWIxZjMwYWYwNzJkOTQzMmNkMGI4YmFj
NWEwNjJlZjIwM2Y4YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
IGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUg
SW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIElt
YWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24p
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFj
ZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcg
QEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJB
MjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2
OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVF
NTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQx
Nyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhU
c1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2
MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAw
MTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5j
cHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8s
CkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8q
IEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVE
MDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgz
RjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2
YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQ
b2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09w
dGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsK
LQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBk
ZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09w
dGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
IH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBh
dXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEw
ICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRt
YXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBE
YXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5
SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNp
emUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAz
LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAg
PSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRp
bmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsK
IAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWlu
c0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFn
ZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3Np
dGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBu
b3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1h
Z2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJs
ZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRp
ZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAg
ICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0
ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBD
b2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBz
cmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAg
ICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
KSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwx
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1h
cCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQg
KzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCku
Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGlt
YWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4
YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJl
dHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQot
ICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0
IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9y
RHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
ZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAg
ICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZy
YW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAg
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xv
cjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5j
b2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAh
bV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAg
ICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYg
bV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVj
dCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5p
bmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFs
cGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3Ig
YXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2
NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAg
Q29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIElu
dFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRl
RGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdl
IG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNh
bGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxw
dHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
ICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRN
b2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1
YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3
MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21w
b3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsK
KworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7
CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8g
aW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
YWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlv
bnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAh
PSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBk
cmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0
ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5
MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9z
c2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODcz
NzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRl
c3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAg
ZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRl
c3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5z
aXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAog
dm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3Zp
ZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZv
cm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2Nzhk
NzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1f
cGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
aW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3
NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgx
NjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBl
N2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFn
ZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1Jl
Y3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQog
CiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlk
ZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9y
bWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0
aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3Bh
Y2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJj
MDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUx
M2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1
NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAg
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291
cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
KyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxl
LgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6
ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAg
ICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6
OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4
ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4
OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgog
fTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
bkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyAr
MzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1Njlh
ZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWVi
YzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpk
cmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwo
Y29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5
NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1
NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMz
MTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgs
MjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgo
KSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lk
dGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAg
dmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkp
OwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBz
Y2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7Cisg
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlv
bnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCku
aGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0
aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
U3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxv
YXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5z
Y2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2Rl
OjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0y
NTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0
aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24o
KSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUg
b3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBv
ZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVI
ZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0g
aFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBv
cCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlv
bigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUo
KTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRy
aW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAg
aW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4
MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4
YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEx
NiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdl
dEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90
U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZk
ZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpA
QCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNv
cHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdz
IGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJz
ZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAg
ICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBz
dGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMw
MzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVy
cnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAg
ICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9
CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rp
bmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+
CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7Cisg
ICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRN
b2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBt
X2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2Rp
bmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUg
fTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50
ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLjQ4ZWQ3YzUwZTQ1
OWVmNjc0YTZiZWNmZDlhMDRkM2M5YWFmODJmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29u
dGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBz
cmNSZWN0LnNpemUoKSkKQEAgLTYzLDcgKzYzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYK
ICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4
dCk7CkBAIC03NCwxNiArNzQsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKICAgICBUaGVt
ZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZs
b2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAv
LyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZl
ci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVm
ZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShj
b250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNy
Y1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBVTlVTRURf
UEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBVTlVTRURfUEFS
QU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURf
UEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYxM2Y0Njk2MzFmYjZlZjRk
NTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEyYTBjZDYxM2Q4MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVy
cmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRleCBkMGZmNjdlZmUxYTZj
MmZiOWQyY2VkYzc1ODc1ZmQ4ODBlNmI1NzMxLi4zOWQ0NGI4NjQ1N2JjMjIwMjhkNjc3YmJkZGE3
NGEzOTkyZTJhNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05h
dGl2ZUltYWdlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRl
ICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRp
dmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29u
c3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVh
ck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRl
YWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJv
T3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93
TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VC
dQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXll
ck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSks
IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0
LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3Vu
ZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0s
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAg
LTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAg
ICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFk
b3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9z
aXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwog
ICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UK
ICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBT
ZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3Ig
PT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwg
JiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9k
ZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNl
KSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1D
b250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAg
ICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVz
dFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUg
YXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0
LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwot
ICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJh
bnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3Jt
Q29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwg
aGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50
YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3Ig
cGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAg
ICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qu
d2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNv
bnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwg
Z2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRl
eHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgp
LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3Jl
KCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTog
SW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVj
dC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBz
dXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9P
cGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRy
YXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNp
emUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0
KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzlj
N2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNk
MjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQg
Y2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZv
aWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhf
dD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVy
cG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1Bh
dHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRT
aXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUp
Owordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
YWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJh
d1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29u
c3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYw
YmM0M2QyYWIuLmNiZWMwNmU2NjBlMmEzZDYwNmEzMmJjODExMWMxMjc2ZjEwMDBmMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDExICsyNzYsMTEgQEAg
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1D
b250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZjFiMDJk
MzRhYjJmZjI5YWRjZmI4NzQzYzg5NGMxZTQ2MDhiNjczYi4uMmY1MTlkNDU0NzdkNDM3OThiNzU5
YTgxNTM0NjJjOTgzNTM3Y2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
QEAgLTc0LDggKzc0LDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdl
OjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5l
KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNh
aXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQwYmY5
YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4
ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY29s
b3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRp
dmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNkNmJi
NzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0Nh
bnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1p
bWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJ
bWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0lt
YWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
U2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2Mzkw
MTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpy
ZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9y
bUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgsNyAr
Mjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdl
dCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJI
ZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1h
Z2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdl
dCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAgYWRq
dXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7CiAj
ZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUp
OworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3Bl
cmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9u
IGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgp
KTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAg
ICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBD
R0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1
bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IElt
YWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRl
eHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERl
c3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNX
aWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdp
bGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9y
aWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQg
Zm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAg
ICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0Lngo
KSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVz
dGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9pZCBw
YXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0u
aXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIG1f
aW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0NvbnRl
eHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlv
bihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgQ0dD
b250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsg
ZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0x
KTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9h
dCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxv
YXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9h
dFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0
LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFm
YTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVm
ZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICBy
ZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1h
Z2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JF
KQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9k
ZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMg
KzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVjdCBh
ZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNv
bHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQo
KSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNl
Ci0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4
dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2
NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9u
U2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVu
ZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9k
YXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMp
OwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewog
ICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNB
Y2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29w
eSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24g
YnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNv
cHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNv
cHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JS
ZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUmVm
UHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAg
ICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZkNWQ5
ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IocGl4
ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxb
Ml0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxs
ZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZl
SW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1
c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBG
bG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTExZTdi
OGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYzYWE0
YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVu
Y2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFn
ZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3
ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAo
bV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZm
ZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VS
ZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1NGY2
NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9v
bCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNlODVl
ZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLmQzOWI2NjJhNGFhOGFiNjQ2YjMzMTcw
MTAyZGI2ZmM4Y2Q4MmExNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAK
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVt
VHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0
byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMjMgKzQ5NiwxNyBAQCBEcmF3TmF0
aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9k
ZXN0aW5hdGlvbihkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQotI2lmIFVTRShD
RykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0jZW5kaWYK
LSAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAgLCBtX29wdGlvbnMob3B0aW9u
cykKIHsKICNpZiAhVVNFKENHKQogICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKG9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKICNlbmRpZgogfQogCiB2
b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25z
dAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBt
X2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwg
bV9vcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9p
bWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCkBAIC01MjgsNyArNTIyLDcgQEAgc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRp
dmVJbWFnZSYgaXRlbSkKIH0KICNlbmRpZgogCi1EcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3
UGF0dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0o
cGF0dGVyblRyYW5zZm9ybSkKQEAgLTUzNiwxNCArNTMwLDEzIEBAIERyYXdQYXR0ZXJuOjpEcmF3
UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9waGFzZShwaGFz
ZSkKICAgICAsIG1fc3BhY2luZyhzcGFjaW5nKQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxl
bmRNb2RlKGJsZW5kTW9kZSkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewogfQogCiB2b2lk
IERyYXdQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0g
ICAgY29udGV4dC5kcmF3UGF0dGVybihtX2ltYWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3Rp
bGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcCwgbV9i
bGVuZE1vZGUpOworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9kZXN0
aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNp
bmcsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCmluZGV4IDhiY2NlMTliMjRlMWZmNWY2NWI2YmY0OGM5NDE3MGM5YjdlMDFmYjgu
LmNmM2NmOTI5MzBjNDZkYmU2YzcyOTdhNWE5MWNlMjUxMjVjYmE3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjQxLDE2ICs2NDEsMTYgQEAgcHJpdmF0ZToKICNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUlt
YWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdO
YXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGljIFJlZjxEcmF3TmF0aXZl
SW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
c291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3Rp
bmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAg
IERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7Cisg
ICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjYyLDE5ICs2NjIsMTUgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVz
dGluYXRpb247CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKLSNpZiBVU0UoQ0cpCi0gICAgQ29t
cG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7Ci0jZW5kaWYK
LSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgbV9vcHRpb25zOwogfTsKICNlbmRpZgogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1Ymxp
YyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3Jl
YXRlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBzdGF0aWMgUmVmPERyYXdQ
YXR0ZXJuPiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKTsKICAg
ICB9CiAKICAgICBjb25zdCBJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9CkBAIC02ODUsNyArNjgxLDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzcGFjaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zcGFjaW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OTcsOCArNjkzLDcgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFBvaW50IG1fcGhh
c2U7CiAgICAgRmxvYXRTaXplIG1fc3BhY2luZzsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX29w
OwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBt
X29wdGlvbnM7CiB9OwogCiAvLyBJcyBEcmF3aW5nSXRlbSBiZWNhdXNlIHRoZSBzaXplIG9mIHRo
ZSB0cmFuc3BhcmVuY3kgbGF5ZXIgaXMgaW1wbGljaXRseSB0aGUgY2xpcCBib3VuZHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTc5N2E3ZmQ0Mjg3MThk
Mzk3MDgwMjU0YTJmZmQ2MTYyM2NhNjU0ZS4uZTIwZjNlZDEzY2I2ZTU1Zjc4MmU4YzlhZGMxMzA4
NzJkZTZlZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtMTI3LDE2ICsxMjcsMTYgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJ
bWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKIH0KIAogI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJ
dGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJh
d2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVu
dChuZXdJdGVtKTsKIH0KICNlbmRpZgogCi12b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBk
b3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGltYWdl
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cCwgYmxlbmRNb2RlKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJh
d2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpKTsK
ICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMTc5OGMxYjJkNDc0Mzc0OThmYzMxNWFjMTYzZDM1ZTQ2
NzUzN2YwLi41MTZkNGRmOGM3ZmQ5ZWI1ZjI5OTc1NjU4ZGQ3NjNkMTgwMGMzY2Q2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTkyLDkgKzkyLDkgQEAgcHJpdmF0
ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVs
ZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQp
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFs
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVj
dChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCmluZGV4IGJlZjNhZDkwNzFlZThjNDUwZDkxZjliZjk4MjQ4NTU1ODBlMWY0
MTcuLmU0ZDcyOTU3YjBjZGU4N2YxN2ZmOTcyZmNiNzE5N2M5NTlmMzMwZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApA
QCAtNzAsNyArNzAsNyBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVj
dCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBk
cmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdP
cHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShp
bi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXIt
PmxvZ2ljYWxTaXplKCkpLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSB9KTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDUzMjNiZWRhYTU3MGE0YjIxMjQxNjhjNDY1YjQ5
NTFjMDQxZjQzOWEuLmQ1NmRiNDBjMDQ5NGRiMTczZjAwMTc0NGI1YzFiYzRkMmMxYTVhMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCkBAIC0yNzAsOCArMjcwLDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9u
UmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsK
ICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9
IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwot
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1
c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBz
b3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9u
UmVjdCksIEZsb2F0UmVjdChzb3VyY2UyUmVjdCkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9u
UmVjdCksIEZsb2F0UmVjdChzb3VyY2VSZWN0KSwgeyBDb21wb3NpdGVTb3VyY2VJbiB9KTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3Bw
CmluZGV4IGIwMmUyOGVkY2Q0MDdmZGZmOGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkuLjA4MmYxOTQ0
ZTk0NTk2ZWM0ZDY5MTIwNmJkNDViNDEyMjUxMTk1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg4NSwxNSArODg1LDEx
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2Ft
cGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
cGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwotICAgIGlmIChtX3JlbmRlcmluZ0NhbkJl
QWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uID0gbV92
aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCiAgICAgYXV0byBnc3RJbWFnZSA9IEltYWdlR1N0cmVh
bWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCks
IHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgY29udGV4dC5k
cmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHsgQ29t
cG9zaXRlQ29weSwgbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkID8gbV92aWRlb1NvdXJjZU9y
aWVudGF0aW9uIDogSW1hZ2VPcmllbnRhdGlvbigpIH0pOwogfQogCiAjaWYgVVNFKEdTVFJFQU1F
Ul9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5jcHAKaW5kZXggNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAy
Yy4uMWQyYWY2OWZkNmZhNzgzZjBmYzE2NjFhODY4MGMyYjEwNjhjMTZhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAg
LTU0OSwxNCArNTQ5LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0CiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwg
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGlu
Z09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRS
ZWN0LCBGbG9hdFJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7
CisgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAg
ICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZv
aWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJl
cGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwz
PigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSwgYXJnPDg+KCkpOwor
ICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxh
eWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0
PigpLCBhcmc8NT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVh
bSYgdHMpIG92ZXJyaWRlCkBAIC01NjcsMTcgKzU2NywxNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdy
YXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05h
dGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0
LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgc3Rh
dGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dT
dGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+
KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCi12
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0cnVjdCBE
cmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0
cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5l
VHJhbnNmb3JtLCBGbG9hdFBvaW50LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlPiB7Cisg
ICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlv
bkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRS
ZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7
CiAgICAgICAgIHZpcnR1YWwgfkRyYXdQYXR0ZXJuKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZv
aWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVwbGF5
KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCks
IGFyZzw0PigpLCBhcmc8NT4oKSwgYXJnPDY+KCksIGFyZzw3PigpKTsKKyAgICAgICAgICAgIENh
aXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0
KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwgYXJn
PDY+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBv
dmVycmlkZQpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAKICAg
ICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5k
PERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wZXJh
dG9yLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRl
cm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxv
YXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRiZDY3MjMxNDg0ZjkxODcyMWNjMGJmZGQ4NjM4
NWU3ZmU1Yjg5ZjkuLjgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFmNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmgKQEAgLTY3LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1
bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2Vi
Q29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGls
ZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBX
ZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6
OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUsIFdlYkNvcmU6OkltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2Um
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3Is
IFdlYkNvcmU6OkJsZW5kTW9kZSA9IFdlYkNvcmU6OkJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0MkRPcGVyYXRpb25zLmNwcAppbmRleCBkN2EwZTk4Mzk3MThjMzEwZWExZjI1OWE1YWY0ZTQx
YWVlODJjNTFjLi45YWUyYTcyZTkwZjk1YjlhYWE0NjQ4Nzg4YzZmMjdhMTc3YzhmZGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0MkRPcGVyYXRpb25zLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgZHJhd0dseXBocyhQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNl
JiBmaWxsCiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
b3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBj
b25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0
Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSkKIHsKICAgICBhdXRvIG5hdGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2UpOwog
ICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gZGV2aWNlQml0bWFwOwpAQCAtNzc0LDEwICs3NzQsMTAg
QEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3Jt
Q29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBp
bWFnZVNpemUgPSBiaXRtYXBTaXplKGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05hdGl2
ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlv
biwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsK
KyAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0KCks
IGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFk
b3dTdGF0ZSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVj
dDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBm
bG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAg
IGF1dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAKQEAgLTgwOSwxNiArODA5LDE2
IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9y
bUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAm
JiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGlt
YWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBs
YXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6
OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRl
T3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0
aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZShhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAg
IGNvbnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQs
IG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgp
KSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAg
aWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Cisg
ICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50
cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBp
ZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAg
ICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWln
aHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAv
LyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVk
IHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9
IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFk
anVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC04
NDIsMTQgKzg0MiwxNCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZwogICAgICAgICBjb250ZXh0
LT5TZXRUcmFuc2Zvcm0oY3RtKTsKIH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNvbnN0
IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKTsKICAg
ICBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGxhdGZvcm1Db250ZXh0KTsK
IAogICAgIGNsaXAocGxhdGZvcm1Db250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBTdGF0ZTo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJs
ZW5kTW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRl
eHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAK
ICAgICBhdXRvIGJpdG1hcEJydXNoUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcEJydXNoUHJvcGVy
dGllcygpOwogICAgIGJpdG1hcEJydXNoUHJvcGVydGllcy5leHRlbmRNb2RlWCA9IEQyRDFfRVhU
RU5EX01PREVfV1JBUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCAwNmY2NTYxOGViMjkwN2M4NWUx
NGY2MGZjYTYzM2IwODg2OWIyZThhLi5iY2NmNjU2OWQ4OGM1NGExM2ZjYWYwNzIyYTkwYjM4ODMx
YjhkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIGNs
ZWFyUmVjdChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2
b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGaWxsU291cmNl
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRm9udCYsIGRvdWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiYg
Z2x5cGhzLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsQWR2YW5jZXMsIGNvbnN0IFZl
Y3RvcjxEV1JJVEVfR0xZUEhfT0ZGU0VUPiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywg
ZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFs
aXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0
aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwog
dm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IFBhdGgmLCBjb25z
dCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0dGVybihQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBk
cmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CiAKIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElE
MkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpOwogdm9pZCBkcmF3V2l0aFNoYWRvdyhQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBj
b25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRh
cmdldCopPiYgZHJhd0NvbW1hbmRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
aAppbmRleCA2YmI2NDRhMmI2NWUyMzRjMTVmZTNjZmZmOWViNzM5MTk0NGQ0MWMxLi40NDI1ZmQy
NmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3ZWUzMWUyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dEltcGxEaXJlY3QyRC5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCmluZGV4IDRlNGQ4OGRlNDQ0MWZlM2Q2NTY3
YzZlOGE4ZjI4YTU1ZTgzMDY4N2IuLmM2MDM4NTFjZDUzNTA2NDU2ZWNiN2YwYzkyYTA0MzgwOTJj
ODFhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UpCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQogewog
ICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggMTQ3YzJk
MGI1YjNmZTk4MTEwYjBmYzNhYzgxZjZiYmQ3NmZhOGFkZC4uNTAyNzk5MGNlNTVlNDYxYjJkZDgy
YjljMzI5ZTlkOWEzMmY4MGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJh
Z0ltYWdlSU9TLm1tCkBAIC05Niw3ICs5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uCiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRleHQp
OwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAgICAg
ICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VTY2Fs
ZSB9KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIElt
YWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCB7IG9yaWVudGF0aW9uIH0pOwogICAgIH1dOwogICAg
IHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDkwMWM0MTEwZTFjNTZiYTYwYTRk
ZDNiYTdiOTNmYWFmNjA0MWNiMzMuLjc0ODJjZTAyMGM5NDEwZjU2ZWIwNjA0ZjNjNTNiZjliMWJk
MjZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAK
ICAgICAgICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFs
aXR5KGNvbnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwogICAg
ICAgICAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmlt
YWdlLCBwYWludEluZm8pOwotICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5k
cmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQo
Z2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnku
c3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJs
ZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsIGludGVycG9s
YXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5
LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6
ZSgpLCB7IGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIGlu
dGVycG9sYXRpb24gfSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdS
ZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChiZ0lt
YWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hlZElt
YWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IDkx
M2JiNDEzYjk0MmYxZTA2MjZjZjU4YzE0NWFiMzI2YjcxY2MyOTYuLjdhYzA0YjhiYTRmNDE1MTNi
M2ZjYmFmMTkzMWJjZjQ0ODA1Yzk0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRpb25RdWFs
aXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCBp
bWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdl
KGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRhdGlv
bigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWdu
ZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAogdm9p
ZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAzZWU4
OGEyYTdjOC4uMzkzNWNiNDVhMTRlNmQ3Njg3OWE1ZDcxOGU1MGE0MDVmMzk0OGE4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NjksNyArNDY5LDcgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9IDA7
CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIgKyBs
ZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIgKyB0
b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwogCi0gICAgICAgICAg
ICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExh
eW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2Nh
bGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50
T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgeyBp
bWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJhd24g
PSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzIsNyArNjMyLDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFJlY3QKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCiAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNv
ZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgIGF1dG8gZHJhd1Jl
c3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2Rp
bmdNb2RlLCBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRvIGRy
YXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCB7IGNv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFnZU9y
aWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1h
Z2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3VyY2Uo
KS5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwCmluZGV4IDBkZmUyODI3NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMwODQu
LjRmZTg1ODYyNWM5MjlkODBiZWNhZmVhNjZmMDY0ZTM0MjE4MTI1Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNo
b3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgIHJldHVybjsK
IAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBv
bGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkp
OwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRhdGlvbigpLCBp
bnRlcnBvbGF0aW9uIH0pOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3ZlcnJp
ZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KaW5kZXggNDRjYjIwMDFjMGJlOGFiNDI3NzZmNTU3NTZlMTQ0MDM3NWMwMTdiYS4uYTQyY2U2
ZWMyZDY5MzljMDAxNjFmMTc5YmUyNjQ0ZTEyNDI5MjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjI3OCw3ICsyMjc4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAwIHx8
IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwgQ29t
cG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGln
bmVkUGx1Z2luUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA1YzU2YjY5OTk1YmM5MmY0Y2E4ODFlMmI5MWU5
ZjM3ZmY1YzM4ZjUyLi4wMGFiYzBkMTI3M2IwZmVjZTAxMzc3ZWU5Yjk4Y2FjN2Q1Zjg2ZWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3OCw3ICsxNzgs
NyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKIH0KIAogSW1hZ2VE
cmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20s
IGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
Ci0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjAyLDcg
KzIwMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAKICAgICBmcmFtZVZpZXcoKS0+c2Ny
b2xsVG9GcmFnbWVudChpbml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0
IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVPcCwg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpO
b25lKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0
LCBzY2FsZWRTcmMsIG9wdGlvbnMpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7
CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0
KikKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgpLCBy
ZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGJ1ZmZl
ci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSk7CiAKICAgICAvLyBGSVhNRTogV0soQnVnIDEx
MzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4KICAgICByZXR1
cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7CkBAIC0yNDcsMTQgKzI0NywxNCBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQogICAg
IFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHBsYXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRhcmdl
dC5nZXQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1Db250
ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVNZW1v
cnkpOwogCi0gICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVT
b3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwg
cmVjdCgpKTsKIAogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KICNlbmRpZgogCiB2b2lkIFNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29u
c3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZs
b2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29u
dGFpbmVyU2l6ZSk7CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZShjb250YWluZXJab29t
KTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRh
aW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBD
b2xvclNwYWNlU1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBh
bGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1
ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJh
Z21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIGRyYXdGb3JDb250YWluZXIoYnVm
ZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFn
bWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKICAgICBpZiAo
Y29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1
bWluYW5jZU1hc2soKTsKIApAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBTVkdJbWFnZTo6ZHJh
d1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFNpemUKICAgICB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0uc2NhbGUoMSAvIGltYWdlQnVmZmVy
U2NhbGUud2lkdGgoKSwgMSAvIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCiAgICAgY29u
dGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgaW1hZ2UtPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlLT5k
cmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0y
OTgsMTEgKzI5OCwxMSBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgIEFTU0VSVCh2aWV3
KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
LSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9w
ZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChlbmNsb3Np
bmdJbnRSZWN0KGRzdFJlY3QpKTsKIAogICAgIGZsb2F0IGFscGhhID0gY29udGV4dC5hbHBoYSgp
OwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gY29tcG9z
aXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRNb2RlOjpO
b3JtYWwgfHwgYWxwaGEgPCAxOworICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFy
ZW5jeUxheWVyID0gb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpICE9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgfHwgb3B0aW9ucy5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBhbHBo
YSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikgewog
ICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwogICAgICAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IDA3
NTQyNGZjNzVkYmRlMDk5MTcwZmYzZjZlYmE2ZTZjNzFmZDJlMTUuLjYxNDU4NTM0MDNiNDc3YWVj
NzExYzhkZDYyZjg4MzY1NDk5ZTAyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCkBAIC05NCwxMCArOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRp
b25UaW1lckZpcmVkKCk7CiAKICAgICBleHBsaWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYg
aW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBk
cmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZy
YWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCi0g
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9h
dCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNv
bnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4g
cm9vdEVsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggY2Y4Y2MzZTVjZWM4ZTgxMmRlNjlh
OWY0NGFkYmI3YjA1YzU1YzAwNS4uZDcwYTY0MGM2YTA0OTFlN2UxNjdmOTRjMTgwZTI3OTFhMzFl
YWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwCkBAIC0zNCwxNiArMzQsMTUgQEAgRmxvYXRTaXplIFNWR0ltYWdlRm9y
Q29udGFpbmVyOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRTaXplKHJvdW5kZWRJbnRT
aXplKHNjYWxlZENvbnRhaW5lclNpemUpKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdl
Rm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBtX2Nv
bnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRzdFJl
Y3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIHJldHVybiBtX2ltYWdl
LT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJa
b29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNvbnRh
aW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFs
RnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBj
b21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwg
bV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAogTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2VG
b3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggODY5ZDA5NzFjNWIyZmU1ZDQ5NTFkZDYwMzQw
YWUzNjNjZjc3NmYwNC4uNTdiMjA0ZDk4M2ZiMDdiMWE3ZWQ2MWExYWZlYjRlYjdmOGFhMGQ0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmgKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRy
aW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsK
KyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
IGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBi
ZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDU1MmVmMWE4ZmUyZDU1
NTY0M2FlOTVjNTQ1YTYwNWNmNzVhN2IzNWMuLmQxZmVmYzZlODNkNjEzMTNiMWJjYzFjM2ExN2U0
NjMxYTA2NDg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBzdGF0aWMgdm9pZCBpbWFn
ZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgSW50ZQogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBiaXRt
YXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCByZW5kZXJJbWFnZS5pbWFnZU9y
aWVudGF0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxv
YXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSksIHsg
cmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgIGluZm8uaW1hZ2UgPSBzaGFy
ZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377112</attachid>
            <date>2019-08-23 01:10:47 -0700</date>
            <delta_ts>2019-08-23 01:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823011047.patch</filename>
            <type>text/plain</type>
            <size>160445</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uY2I0ZTM3ZTI4NGM5Yjg4YjQyOTE4NzdkNTc0ZWU5
YzlmZDAzNGEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NiBAQAorMjAxOS0wOC0yMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
TmF0aXZlSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjphcHBseSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKE5pY29zaWE6OkNh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpcmVjdDJEOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVj
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd0ZvckNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZl
SW1hZ2VGb3JDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9y
Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpk
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmg6CisKIDIw
MTktMDgtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFt3YXRj
aE9TXSBEaXNhYmxlIENvbnRlbnQgRmlsdGVyaW5nIGluIHRoZSBzaW11bGF0b3IgYnVpbGQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggZWRlMzUxZDJmNzc4N2EwZDljMTBlYmNiZDY2YzNkNTBhZjcwNTc2MC4uZjViYzhi
YzkyNzE1Yzc5YzJiNmVlZTZmMDgxZThjOTg0YWRhN2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxOS0wOC0yMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEFsbCBpbWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBh
biBhcmd1bWVudCBvZiB0eXBlIEltYWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZSgpIG5vdyB0YWtlcyBhbiBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6aW1hZ2VQ
b3NpdGlvbkluZm9ybWF0aW9uKToKKwogMjAxOS0wOC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVudCBGaWx0ZXJpbmcg
aW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4NTJkM2QzOTM3ZDY2ZTlkZmYxMjkwZDMxY2Nj
ZDg0NmY5Y2I1ZGEuLjI3YTYxY2Y2OWViMDE3ODMwNDE1ZjNiNDU2MmNjZDEzOTA3Y2I4YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIwODQsNiArMjA4NCw3IEBACiAJCTcyMTQ0MzMyMjIzRUM4NUYwMEYxMkZGNyAvKiAobnVs
bCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzMyMjNFQzhCMDAwRjEyRkY3IC8q
IFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJvcGVydHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzNDIyM0VDOTE2
MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAwRkJBOTQ0IC8qIFNWR1Byb3Bl
cnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQzE4QTNGMjMw
QjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVEMzMyMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0MgLyogSlNFWFRCbGVuZE1pbk1h
eC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0RUU1NEUx
REM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFEQzgwRDg0MDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlT
dGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTk0MTcsNiArOTQxOCw3IEBACiAJCTcyN0FGRUQxMUEyRUE2QTAwMDA0
NDJFOCAvKiBFWFRzUkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjdBRkVEMjFBMkVB
NkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFWFRzUkdCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQzMUEyRUE2
QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdC
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJDMThBM0YyMzBCMDRCNzAwNjg0
N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUGFpbnRp
bmdPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThE
MkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJF
NDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRGcmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjQ1NTMsNiArMjQ1NTUsNyBAQAogCQkJCTU1NzZBNTYzMUQ4OEE3
MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3RjQ0QTcwQjlFMzI0RTAwQTlE
MDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ2NjEyQ0MzNzYzMDAxRkJBNDEg
LyogSW1hZ2VPcmllbnRhdGlvbi5oICovLAorCQkJCTcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAv
KiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovLAogCQkJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLywKIAkJCQk1NTQ2NzU3NzFGRDFGQzFBMDAzQjEw
QjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4MUZEMUZDMUEwMDNCMTBCMCAv
KiBJbWFnZVNvdXJjZS5oICovLApAQCAtMjk1NjksNiArMjk1NzIsNyBAQAogCQkJCTA4OTU4MjU2
MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3
RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQYWludGluZ09w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MUEyRjNGMTdEN0QzQUUwMDcyNTE3QSAvKiBJ
bWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTI5MUU0QjEzNDE3
MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCmluZGV4IDYzMWZhZTcyYjEw
MzFhNjUyMDRlNzlmY2JhNWMzNmM2ZDliMDkwNTMuLjZiMGM3YTNkNjdjZGM3YTViYjVkZTI5ODRj
ZDJiYTU1ZGYzMDI3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRt
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCkBAIC0zMjMs
MTAgKzMyMyw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50CiAgICAgfQogCiAgICAgRmxvYXRS
ZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9s
YXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdl
KCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0
aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsKIAogICAgIC8vIDcuIENyZWF0ZSBhIG5ldyBJbWFnZUJp
dG1hcCBvYmplY3QuCiAgICAgYXV0byBpbWFnZUJpdG1hcCA9IGNyZWF0ZShXVEZNb3ZlKGJpdG1h
cERhdGEpKTsKQEAgLTM3MywxMCArMzcwLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW4KICAg
ICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsK
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdP
cHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJl
c2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNv
bnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFu
Z2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGJpdG1hcERh
dGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNl
UmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9y
UmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAgLy8gMy4gQ3Jl
YXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0bWFwID0gY3Jl
YXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtNDg0LDEwICs0NzgsNyBAQCB2b2lkIEltYWdl
Qml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SW1h
Z2VCaXRtYXA+JiBleAogICAgIGF1dG8gaW1hZ2VGb3JSZW5kZXIgPSBleGlzdGluZ0ltYWdlQml0
bWFwLT5idWZmZXIoKS0+Y29weUltYWdlKCk7CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxv
YXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGlu
Z09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5
KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVy
LCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGlu
Z09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9y
UmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxp
dHkpIH0pOwogCiAgICAgLy8gMy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAg
ICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtNjUx
LDEwICs2NDIsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKAogICAgIH0K
IAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXpl
UXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVy
blZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMu
cmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1v
dmUoYml0bWFwRGF0YSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDUzYzljNTY2MDQy
N2M0ODZlMzJhYmMwYzJkNjU0Y2NjNTZjMDI4YTMuLjllYjk0N2RmMTgwNTU2NThkYTQ2N2QyY2Yz
MzJlMTA3NjJiZTRmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xNTc0LDE3ICsxNTc0
LDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShEb2N1bWVudCYgZG9jdW1lbnQsIENhCiAgICAgICAgIGRvd25jYXN0PEJpdG1hcElt
YWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0aW5ncyhkb2N1bWVudC5zZXR0aW5ncygpKTsKIAog
ICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMobm9ybWFsaXplZERzdFJlY3QpKSB7Ci0gICAgICAg
IGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3
SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3As
IGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShvcCkpIHsKICAgICAgICAgZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXpl
ZFNyY1JlY3QsIG9wKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSBpZiAob3AgPT0gQ29tcG9zaXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAg
ICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+
ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCB7
IG9wLCBibGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6
ZWRTcmNSZWN0LCB7IG9wLCBibGVuZE1vZGUgfSk7CiAgICAgICAgIGRpZERyYXcobm9ybWFsaXpl
ZERzdFJlY3QpOwogICAgIH0KICAgICAKQEAgLTE2MzIsNyArMTYzMiw3IEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShIVE1MQ2FudmFz
RWxlbWVudCYgc291CiAjZW5kaWYKIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVj
dCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgp
Lmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJs
ZW5kIH0pOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChp
c0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewogICAg
ICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSk7CkBAIC0xNjQxLDE1ICsxNjQxLDE1IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShI
VE1MQ2FudmFzRWxlbWVudCYgc291CiAgICAgICAgIGlmICgmc291cmNlQ2FudmFzID09ICZjYW52
YXNCYXNlKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0
VG9CdWZmZXIoc3JjUmVjdCwgQ29sb3JTcGFjZVNSR0IsICpjKSkgewogICAgICAgICAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5
LCBkc3RSZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgSW1hZ2VQYWludGluZ09wdGlvbnMo
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAg
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0
LnNpemUoKSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2xlYXJD
YW52YXMoKTsKLSAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwg
c3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpi
dWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBk
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIo
KmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3Rh
dGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAK
QEAgLTE3MzAsMTcgKzE3MzAsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEltYWdlQml0bWFwJiBpbWFnZUJpdG0KICAgICBjaGVj
a09yaWdpbigmaW1hZ2VCaXRtYXApOwogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RS
ZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRl
KCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRz
dFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFs
QmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYg
KGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAg
ICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNy
Y1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9z
aXRlQ29weSkgewogICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICBjLT5kcmF3SW1hZ2VC
dWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+
ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRp
cmVDYW52YXMoKTsKICAgICB9IGVsc2UgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdl
QnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAg
ICAgfQogCkBAIC0xODI5LDE0ICsxODI5LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6Y29tcG9zaXRlQnVmZmVyKEltYWdlQnVmZmVyJiBidWZmZXIsIGNvbnN0IEluCiAg
ICAgYy0+cmVzdG9yZSgpOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1h
Z2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZv
aWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShp
bWFnZSwgZGVzdCwgc3JjLCBvcCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3Qs
IHNyYywgb3B0aW9ucyk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVy
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBvcHRp
b25zKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZShUJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3Ap
CkBAIC0xODY1LDcgKzE4NjUsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYQogICAgIGJ1ZmZl
ci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24o
KSk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQpOwogICAg
IGJ1ZmZlci0+Y29udGV4dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOwotICAgIGRy
YXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwg
c3JjLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2Us
IGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgeyBDb21wb3NpdGVTb3VyY2VP
dmVyIH0pOwogCiAgICAgY29tcG9zaXRlQnVmZmVyKCpidWZmZXIsIGJ1ZmZlclJlY3QsIG9wKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAppbmRleCBiMmJkNDdjYjE2MTRjZGFlNWQ4OWVlYTE3YjQyYzQ3ODZiYzJkOWIxLi42MjY1MDQw
NzhiNzkwMzdjODhjMmU1ZDA3OGEwZTFhZjhiMTVmMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAg
RW5jb2RlZERhdGFTdGF0dXMgQml0bWFwSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBEZWNvZGluZ1N0YXR1
czo6SW52YWxpZDsKICAgICByZXR1cm4gbV9zb3VyY2UtPmRhdGFDaGFuZ2VkKGRhdGEoKSwgYWxs
RGF0YVJlY2VpdmVkKTsKIH0KLSAgICAKKwogdm9pZCBCaXRtYXBJbWFnZTo6c2V0Q3VycmVudEZy
YW1lRGVjb2RpbmdTdGF0dXNJZk5lY2Vzc2FyeShEZWNvZGluZ1N0YXR1cyBkZWNvZGluZ1N0YXR1
cykKIHsKICAgICAvLyBXaGVuIG5ldyBkYXRhIGlzIHJlY2VpdmVkLCBtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzIGlzIHNldCB0byBEZWNvZGluZ1N0YXR1czo6SW52YWxpZApAQCAtMTgzLDcg
KzE4Myw3IEBAIGJvb2wgQml0bWFwSW1hZ2U6Om5vdFNvbGlkQ29sb3IoKQogfQogI2VuZGlmCiAK
LUltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBEZWNvZGluZ01vZGUgZGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoZGVzdFJlY3QuaXNFbXB0eSgpIHx8IHNyY1Jl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5n
OwpAQCAtMTk2LDcgKzE5Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgTE9HKElt
YWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9
ICVkIHNjYWxlRmFjdG9yRm9yRHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18s
IHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGlu
dD4obV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0
aCgpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgTmF0aXZlSW1hZ2VQ
dHIgaW1hZ2U7Ci0gICAgaWYgKGRlY29kaW5nTW9kZSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJv
bm91cykgeworICAgIGlmIChvcHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6
QXN5bmNocm9ub3VzKSB7CiAgICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAg
QVNTRVJUKCFtX2N1cnJlbnRGcmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKIApAQCAtMjE2
LDcgKzIxNiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAKICAgICAgICAgaWYgKCFmcmFt
ZUhhc0RlY29kZWROYXRpdmVJbWFnZUNvbXBhdGlibGVXaXRoT3B0aW9uc0F0SW5kZXgobV9jdXJy
ZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwsIERlY29kaW5nT3B0aW9ucyhEZWNv
ZGluZ01vZGU6OkFzeW5jaHJvbm91cykpKSB7CiAgICAgICAgICAgICBpZiAobV9zaG93RGVidWdC
YWNrZ3JvdW5kKQotICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBk
ZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOwor
ICAgICAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29s
b3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVP
cGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIApAQCAt
MjI3LDcgKzIyNyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgICAgIEFTU0VSVF9J
TVBMSUVTKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUsICgh
bV9jdXJyZW50RnJhbWUgJiYgIW1fcmVwZXRpdGlvbnNDb21wbGV0ZSkgfHwgZnJhbWVIYXNGdWxs
U2l6ZU5hdGl2ZUltYWdlQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxp
bmdMZXZlbCkpOwogCiAgICAgICAgIGlmIChzdGF0dXMgPT0gU3RhcnRBbmltYXRpb25TdGF0dXM6
OkRlY29kaW5nQWN0aXZlICYmIG1fc2hvd0RlYnVnQmFja2dyb3VuZCkgewotICAgICAgICAgICAg
ZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93
KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29s
b3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhh
KDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjQ1LDcgKzI0NSw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzCiAgICAgICAgIH0gZWxzZSBpZiAoZnJhbWVJc0JlaW5nRGVjb2RlZCkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgeWVsbG93IHJl
Y3RhbmdsZSBhbmQgcmV0dXJuaW5nIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhpcyBmcmFtZSB0byBm
aW5pc2ggZGVjb2RpbmcuCiAgICAgICAgICAgICBpZiAobV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7
Ci0gICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBD
b2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6
eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkp
OwogICAgICAgICAgICAgICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVy
bDogJXMgW3dhaXRpbmcgZm9yIGFzeW5jIGRlY29kaW5nIHRvIGZpbmlzaF0iLCBfX0ZVTkNUSU9O
X18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29k
aW5nOwpAQCAtMjY0LDE0ICsyNjQsMTUgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBB
U1NFUlQoaW1hZ2UpOwogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7
CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgaWYgKG9yaWVudGF0aW9uID09
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKLSAgICAgICAgb3JpZW50YXRpb24gPSBmcmFt
ZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CisgICAgaWYgKG9wdGlvbnMub3Jp
ZW50YXRpb24oKSA9PSBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UpCisgICAgICAgIGRyYXdO
YXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6
ZSgpKSwgeyBvcHRpb25zLCBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChtX2N1cnJlbnRGcmFtZSkg
fSk7CisgICAgZWxzZQorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wdGlvbnMpOwogCi0gICAgZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXpl
KCkpLCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOwogICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdT
dGF0dXMgPSBmcmFtZURlY29kaW5nU3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAKICAg
ICBpZiAoaW1hZ2VPYnNlcnZlcigpKQpAQCAtMjgwLDcgKzI4MSw3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
dGlsZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yOTAsNyArMjkxLDcgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogICAgICAgICBpZiAobV9jdXJyZW50RnJhbWVEZWNvZGlu
Z1N0YXR1cyA9PSBEZWNvZGluZ1N0YXR1czo6SW52YWxpZCkKICAgICAgICAgICAgIG1fc291cmNl
LT5kZXN0cm95SW5jb21wbGV0ZURlY29kZWREYXRhKCk7CiAgICAgICAgIAotICAgICAgICBJbWFn
ZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgSW1hZ2U6OmRyYXdQYXR0ZXJuKGN0
eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9u
cyk7CiAgICAgICAgIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPSBmcmFtZURlY29kaW5n
U3RhdHVzQXRJbmRleChtX2N1cnJlbnRGcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zMDUsNyArMzA2LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogICAgICAgICAvLyBUZW1w
b3JhcmlseSByZXNldCBpbWFnZSBvYnNlcnZlciwgd2UgZG9uJ3Qgd2FudCB0byByZWNlaXZlIGFu
eSBjaGFuZ2VJblJlY3QoKSBjYWxscyBkdWUgdG8gdGhpcyByZWxheW91dC4KICAgICAgICAgc2V0
SW1hZ2VPYnNlcnZlcihudWxscHRyKTsKIAotICAgICAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgp
LCB0aWxlUmVjdCwgdGlsZVJlY3QsIG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgICAgICBkcmF3KGJ1ZmZlci0+Y29u
dGV4dCgpLCB0aWxlUmVjdCwgdGlsZVJlY3QsIHsgb3B0aW9ucywgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSB9KTsKIAogICAgICAgICBzZXRJbWFnZU9i
c2VydmVyKG9ic2VydmVyKTsKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CkBAIC0zMTYsNyArMzE3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogICAgIH0KIAog
ICAgIGN0eHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIG1fY2FjaGVkSW1hZ2Ut
PmRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4o
Y3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRp
b25zKTsKIH0KIAogYm9vbCBCaXRtYXBJbWFnZTo6c2hvdWxkQW5pbWF0ZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCA1YWVm
NjFkN2U4OTliZGNmNWM0ZDQ0NWFhYmM4OGI2OGYxZjA0YWQ1Li4zMjAyZmJlMzA0ZWNmZWE2ZmZj
OGZlYjUyNzZiNjBjMmI4NThlMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTE2MSw4ICsxNjEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gfGRlc3Ryb3lBbGx8IGFsb25nLgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhSWZOZWNl
c3NhcnkoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgZHJhd0ZyYW1l
TWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRl
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggZWE2NGIxZDk0ODliMTAzNTcy
ZDBjNjk2ODliZGRhMzQwYWM2NzMzZi4uZDRiZGI1ZjIwYWE0YWQyYTU3MzY1YTM4NmMyNjAyY2Qz
OTNhZTYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNTAsMjAgKzUwLDIxIEBAIHN0
YXRpYyB2b2lkIGRyYXdDcm9zc2ZhZGVTdWJpbWFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgQ29tcG9zCiAgICAgYm9vbCB1c2VUcmFuc3BhcmVuY3lMYXllciA9IGlt
YWdlLmlzU1ZHSW1hZ2UoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKLSAgICAKLSAgICBDb21wb3NpdGVPcGVyYXRvciBkcmF3SW1hZ2VPcGVy
YXRpb24gPSBvcGVyYXRpb247CisKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zOwog
CiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgIGNvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG9wZXJhdGlvbik7CiAgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3Bh
cmVuY3lMYXllcihvcGFjaXR5KTsKLSAgICAgICAgZHJhd0ltYWdlT3BlcmF0aW9uID0gQ29tcG9z
aXRlU291cmNlT3ZlcjsKLSAgICB9IGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgICBjb250ZXh0
LnNldEFscGhhKG9wYWNpdHkpOworICAgICAgICBvcHRpb25zID0geyBvcGVyYXRpb24gfTsKKyAg
ICB9CiAKICAgICBpZiAodGFyZ2V0U2l6ZSAhPSBpbWFnZVNpemUpCiAgICAgICAgIGNvbnRleHQu
c2NhbGUodGFyZ2V0U2l6ZSAvIGltYWdlU2l6ZSk7CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShp
bWFnZSwgSW50UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoZHJhd0ltYWdlT3BlcmF0aW9u
KSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCksIG9wdGlvbnMpOwog
CiAgICAgaWYgKHVzZVRyYW5zcGFyZW5jeUxheWVyKQogICAgICAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CkBAIC04NiwxMCArODcsMTAgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZTo6ZHJhd0Nyb3NzZmFkZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgY29u
dGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3Np
dGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZHN0
UmVjdCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBp
ZiAoZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xMDAsNyArMTAxLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmwKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogfQogCi12b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBDcm9z
c2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgp
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQpAQCAtMTExLDcgKzExMiw3IEBAIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSCiAgICAgZHJhd0Nyb3NzZmFkZShncmFwaGljc0NvbnRleHQpOwogCiAgICAg
Ly8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZm
ZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1
ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIENyb3NzZmFkZUdlbmVy
YXRlZEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgK
aW5kZXggMjFlMTMyMzUxODVhNGU4NTJmNGQwMmRmNGNkMWY0Njk4YzdlMWNjMC4uMWRkN2VhOWVj
M2ZhNWViMjg5YWYwYjBiYTcyOTAwNmNiOGI3ZTVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCkBA
IC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1
bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
b3ZlcnJpZGU7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFnZSYgZnJvbUltYWdl
LCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxvYXRTaXplJiBjcm9z
c2ZhZGVTaXplLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcAppbmRleCBmYWEwYmYwNjE0
MDU5ODEyYjY2NDM1MThlNTg3Mzc4ZDAzZWE3OWQzLi4yZmI2ZmE0NGQ4OGJlMmMyYzNjYTczNmRj
MzhhYTIyNDhmOTIwY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMTcwLDEwICsxNzAsMTAgQEAgSW1hZ2VE
cmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY28KICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3Owog
fQogCi1JbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQg
Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RD
b250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Qu
c2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtMTgzLDcgKzE4Myw3IEBAIEltYWdlRHJhd1Jl
c3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0CiB9CiAKIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gQWxsb3cgdGhl
IGdlbmVyYXRvciB0byBwcm92aWRlIHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRl
cnMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KICAgICBGbG9hdFNpemUgYWRqdXN0ZWRTaXplID0g
c2l6ZSgpOwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAg
aWYgKGRlc3RDb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29u
dmVydFRvTHVtaW5hbmNlTWFzaygpOwogCi0gICAgYnVmZmVyLT5kcmF3UGF0dGVybihkZXN0Q29u
dGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFz
ZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgYnVmZmVyLT5kcmF3UGF0
dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0
ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgZGVzdENvbnRleHQuc2V0RHJh
d0x1bWluYW5jZU1hc2soZmFsc2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKaW5kZXggNGU4ZTU4OTc5NTFhOTUxMjVi
OTEzNDgwYWY5MzMwM2ViNjc4ZDcxZS4uZTc3MDc5Yjg4Mjk2ZWYxMjBkZjBiNjI0NDJlODVlMTcy
N2U2YTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaApAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VE
cmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXpl
Jik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsK
LSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIGZpbmFsOwogCiAgICAgV2Vha1B0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
UGFpbnREZWZpbml0aW9uPiBtX3BhaW50RGVmaW5pdGlvbjsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2lucHV0UHJvcGVydGllczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDNhODU5YzMxYWM0ZjAyYmI3YTJjYjQ2NDMzZDhkOGFi
YWU2MjFhNDEuLjEwODY4OGI5NzU2NTdkYTQ3YjE3NGZmNTczNDk5ZDFhMmU4ZTRhNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaApA
QCAtNDYsOSArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGUgPSAwOwotICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRl
ID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAppbmRleCA1ZDRlZTI4MTY2YmI0ODhhNzlkY2EyOTRmYWFjZGY2NWMyYTRmNDBiLi5mM2Vj
MGExYWQ0NjA0MTI4NzJkOTIwZTdlMWUwMTE2NzY2Y2E2M2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcApAQCAtMzksMTAgKzM5
LDEwIEBAIEdyYWRpZW50SW1hZ2U6OkdyYWRpZW50SW1hZ2UoR3JhZGllbnQmIGdlbmVyYXRvciwg
Y29uc3QgRmxvYXRTaXplJiBzaXplKQogCiBHcmFkaWVudEltYWdlOjp+R3JhZGllbnRJbWFnZSgp
ID0gZGVmYXVsdDsKIAotSW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3
UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBkZXN0Q29udGV4
dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRp
b25zLmJsZW5kTW9kZSgpKTsKICAgICBkZXN0Q29udGV4dC5jbGlwKGRlc3RSZWN0KTsKICAgICBk
ZXN0Q29udGV4dC50cmFuc2xhdGUoZGVzdFJlY3QubG9jYXRpb24oKSk7CiAgICAgaWYgKGRlc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTUzLDcgKzUzLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWMKIH0KIAogdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
KyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUg
Z2VuZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVy
cyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBz
aXplKCk7CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgZGVz
dENvbnRleHQuc2V0RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwogCiAgICAgLy8gVGlsZSB0aGUg
aW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIG1f
Y2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIAog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmgKaW5kZXggMWQ5ZGQ5MDhiYzA3NjFlNTUyNGQxYTQ3OGVhNmM1ZWFmYjc4OGVmZC4uMGNjMTg0
MzljMTQ3ZjkzNGRkZTE5MzA3NDhkYTcwYzNmYjE3NWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApAQCAtNDYsOCArNDYsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEdyYWRpZW50SW1hZ2UoR3JhZGllbnQmLCBjb25zdCBGbG9h
dFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZp
bmFsOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSkgZmluYWw7CiAgICAgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNv
bnN0IGZpbmFsOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggN2FmOWVhZTA0N2E3OTY2NTIzZWY0Njk1MzQ1
OGRmZDNjOWRmOTJlOS4uMzM1MTNkZjRmODM3ZmE2ODZkM2Q0YmFmNDk4YzBlZTg4MTUzMTBhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCkBAIC03MTUsNTUgKzcxNSw1MCBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aQog
CiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLm9yaWdpbmFsU2l6ZSgpKTsK
LSNlbHNlCiAgICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkp
OwotI2VuZGlmCi0gICAgICAgIAogICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzcmNSZWN0LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAg
ICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2Uo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogCi0gICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1
cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1h
Z2VQYWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3
UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXpl
LCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwt
PmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAotICAgIEltYWdlOjpUaWxlUnVsZSBoUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1h
Z2VQYWludGluZ09wdGlvbnMpCisgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGls
ZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6
OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5k
cmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9y
LCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2Fs
ZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zKTsKIAogICAgIGlmIChoUnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAgICAgICAg
IC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVz
dGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4g
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKICAgICB9CiAK
LSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1
YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2NvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJw
b2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMu
Y29tcG9zaXRlT3BlcmF0b3IoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAt
Nzc2LDEzICs3NzEsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGkKICAgICBkcmF3SW1hZ2VC
dWZmZXIoaW1hZ2UsIGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNp
emUoaW1hZ2UubG9naWNhbFNpemUoKSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3Is
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9w
dGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgZGVz
dGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKQEAgLTgwMSwxMyArNzk2LDEzIEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnCiAgICAgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1h
Z2UpLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdl
TG9naWNhbFNpemUpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlv
bnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmco
V1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5k
TW9kZSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkp
OworICAgIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKFdURk1vdmUoaW1hZ2UpLCAqdGhpcywg
ZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXgg
NDQ3ZDdlM2UzNTQ3NjJlODBiOGYyN2E5NTI2MjMyMjc5YjVmOTA5NC4uN2NlMWNiYjBhMzgxMGFm
YzNkYmUyNWI0ZjJkZjQ5MzY4ODkzZTQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNs
dWRlICJQYXR0ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CkBAIC0yMTAsNDMgKzIxMSw2IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSB7CiAjZW5kaWYKIH07CiAKLXN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7Ci0g
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBv
bGF0aW9uRGVmYXVsdCkKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9w
ZXJhdG9yKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2Rl
Y29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRh
dGlvbikKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFs
aXR5KQotICAgIHsKLSAgICB9Ci0KLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVh
bGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpCi0gICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVy
YXRvcikKLSAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0gICAgICAgICwgbV9kZWNv
ZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCi0gICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0
eSkKLSAgICB7Ci0gICAgfQotCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHksIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMpCi0gICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVy
YXRvcikKLSAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0gICAgICAgICwgbV9kZWNv
ZGluZ01vZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRp
b24pCi0gICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0
eSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgdXNlc0RlZmF1bHRJbnRlcnBvbGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9PSBJbnRlcnBvbGF0aW9u
RGVmYXVsdDsgfQotCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvcjsK
LSAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7Ci0gICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdN
b2RlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLSAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5OwotfTsKLQogc3RydWN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSgpID0g
ZGVmYXVsdDsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQpAQCAtMzQ3LDcgKzMxMSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0Uo
Q0cpIHx8IFVTRShESVJFQ1QyRCkgfHwgVVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlv
bjo6Tm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAjZW5kaWYKIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KQpAQCAtMzk1LDIzICszNTksMjIgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdl
UGFpbnRpbmdPcHRpb25zKCkpOwotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBk
cmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IElt
YWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLAotICAg
ICAgICBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkp
OwotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGlu
Z09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
KyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKIAotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNw
cAppbmRleCA5NjM2NDlmNTY5YWUzNDc3MDFkNTFkYWRkZjQwN2Y1YWZmYTZjMGEyLi5jZThlMTcy
YTE2MWFlNDZhZWEyODgyNzllYmM5MDg2MTNlMmNjZWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcApAQCAt
MzcsMjcgKzM3LDI3IEBAIEdyYXBoaWNzQ29udGV4dEltcGw6On5HcmFwaGljc0NvbnRleHRJbXBs
KCkKIHsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJbWFn
ZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhdyhjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0
LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3
KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRy
YXdUaWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIEludGVycG9sYXRpb25RdWFs
aXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4g
aW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBz
cGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBh
aW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGlu
Z01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShj
b250ZXh0LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFn
ZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwg
SW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJh
d1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1h
Z2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdl
OjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJl
dHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRleHQsIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2VJbXBsKGNvbnRl
eHQsIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKICAgICB9CiAKLSAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlz
U2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0
eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9jb21wb3NpdGVPcGVyYXRvcik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVy
IGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJw
b2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9u
cy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5oCmluZGV4IGI4NzMxOTRlZTI0NjAxZmU0ZTA3MTQ3YWE3MWVhMzA1ODdhODRhNDUuLjhm
YmM1ZTU2Y2YxNTQ4NTM3NzljNTU0NDU0NWU5ZTZhMWM5Yzg4N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAg
LTczLDkgKzczLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1
YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0
U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDM5OTk2NzJiOWY1ODkz
Mjg2Y2YzMmRiMWNjNmI4MGEzMzE4MmFkYzQuLmVlZTRjZmUyMzZhMzU4NWM3NTU2ZmJiYTI1OTZj
MDA4Njc2ZWExYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTEzOCwzMiArMTM4LDI4IEBAIHZvaWQgSW1hZ2U6OmZpbGxXaXRoU29saWRDb2xvcihH
cmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKIH0KIAogdm9p
ZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KCFuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
dHh0LmRyYXdQYXR0ZXJuKCp0aGlzLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBjdHh0LmRyYXdQYXR0ZXJu
KCp0aGlzLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCiAgICAgICAgIGltYWdl
T2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNv
bG9yLmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJl
Y3QsIGNvbG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVj
dCwgY29sb3IsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiAgICAgfQogCiAgICAgQVNTRVJUKCFpc0JpdG1hcElt
YWdlKCkgfHwgbm90U29saWRDb2xvcigpKTsKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgRmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXplID0gb3JpZ2luYWxTaXplKCk7Ci0jZWxzZQog
ICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IHNpemUoKTsKLSNlbmRpZgogICAgIGlm
IChoYXNSZWxhdGl2ZVdpZHRoKCkpCiAgICAgICAgIGludHJpbnNpY1RpbGVTaXplLnNldFdpZHRo
KHNjYWxlZFRpbGVTaXplLndpZHRoKCkpOwogICAgIGlmIChoYXNSZWxhdGl2ZUhlaWdodCgpKQpA
QCAtMTg0LDcgKzE4MCw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAgICAgICAgIHZpc2li
bGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5o
ZWlnaHQoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRo
KCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRl
c3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZHJhdyhj
dHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9k
ZSwgb3JpZW50YXRpb24pOworICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlz
aWJsZVNyY1JlY3QsIG9wdGlvbnMpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0xOTYsNyArMTkyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgICAg
IHZpc2libGVTcmNSZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBz
Y2FsZS5oZWlnaHQoKSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aCgxKTsK
ICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAv
IHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0
LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9y
aWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoc2l6ZSgpLmhlaWdodCgpID09IDEgJiYgaW50ZXJzZWN0aW9uKG9uZVRpbGVS
ZWN0LCBkZXN0UmVjdCkud2lkdGgoKSA9PSBkZXN0UmVjdC53aWR0aCgpKSB7CiAgICAgICAgICAg
ICBGbG9hdFJlY3QgdmlzaWJsZVNyY1JlY3Q7CkBAIC0yMDQsNyArMjAwLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWMKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFkoMCk7CiAgICAg
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpIC8gc2NhbGUu
d2lkdGgoKSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoMSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgICAg
ICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIHsgb3B0aW9ucywg
QmxlbmRNb2RlOjpOb3JtYWwgfSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIzNiw3
ICsyMzIsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgICAgIEZsb2F0
UmVjdCBmcm9tUmVjdCh0b0Zsb2F0UG9pbnQoY3VycmVudFRpbGVSZWN0LmxvY2F0aW9uKCkgLSBv
bmVUaWxlUmVjdC5sb2NhdGlvbigpKSwgY3VycmVudFRpbGVSZWN0LnNpemUoKSk7CiAgICAgICAg
ICAgICAgICAgZnJvbVJlY3Quc2NhbGUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWln
aHQoKSk7CiAKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJv
bVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7
CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCB7
IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxl
UmVjdC53aWR0aCgpOwpAQCAtMjUwLDE3ICsyNDYsMTcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdl
OjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWMKIAogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNm
b3JtKCkuc2NhbGVOb25Vbmlmb3JtKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKICAg
ICBGbG9hdFJlY3QgdGlsZVJlY3QoRmxvYXRQb2ludCgpLCBpbnRyaW5zaWNUaWxlU2l6ZSk7Ci0g
ICAgZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBvbmVUaWxlUmVjdC5sb2NhdGlvbigpLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBk
cmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9u
ZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgIHN0YXJ0QW5pbWF0
aW9uKCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAogLy8gRklY
TUU6IE1lcmdlIHdpdGggdGhlIG90aGVyIGRyYXdUaWxlZCBldmVudHVhbGx5LCBzaW5jZSB3ZSBu
ZWVkIGEgY29tYmluYXRpb24gb2YgYm90aCBmb3Igc29tZSB0aGluZ3MuCi1JbWFnZURyYXdSZXN1
bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVP
cGVyYXRvciBvcCkKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29u
dGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwg
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogeyAg
ICAKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIGlmIChj
b2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJl
Y3QsIGNvbG9yLCBvcCk7CisgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAgICAgCkBAIC0zMzAsMTggKzMyNiwxNCBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdAogICAgICAgICB2UGhhc2UgLT0gKGRzdFJlY3QuaGVp
Z2h0KCkgLSBzY2FsZWRUaWxlSGVpZ2h0KSAvIDI7CiAKICAgICBGbG9hdFBvaW50IHBhdHRlcm5Q
aGFzZShkc3RSZWN0LngoKSAtIGhQaGFzZSwgZHN0UmVjdC55KCkgLSB2UGhhc2UpOwotICAgIGRy
YXdQYXR0ZXJuKGN0eHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRl
cm5QaGFzZSwgc3BhY2luZywgb3ApOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRzdFJlY3QsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBhdHRlcm5QaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7
CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogfQogCiB2b2lkIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgm
IGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRy
aW5zaWNSYXRpbykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGludHJpbnNpY1Jh
dGlvID0gb3JpZ2luYWxTaXplKCk7Ci0jZWxzZQogICAgIGludHJpbnNpY1JhdGlvID0gc2l6ZSgp
OwotI2VuZGlmCiAgICAgaW50cmluc2ljV2lkdGggPSBMZW5ndGgoaW50cmluc2ljUmF0aW8ud2lk
dGgoKSwgRml4ZWQpOwogICAgIGludHJpbnNpY0hlaWdodCA9IExlbmd0aChpbnRyaW5zaWNSYXRp
by5oZWlnaHQoKSwgRml4ZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKaW5kZXggMzY5OTdjODM1MjFjNDZjNWNkNDc1NTZkODE0NGVlOTI1NTA5YTRhNy4uZDU1
MDY3NzMyZjdmMzlhMzkwOTk4OGFiNGFlZTJiNTdhYTk1ZWYwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEZsb2F0U2l6
ZTsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CiBj
bGFzcyBTaGFyZWRCdWZmZXI7CitzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CiBzdHJ1Y3Qg
TGVuZ3RoOwogCiAvLyBUaGlzIGNsYXNzIGdldHMgbm90aWZpZWQgd2hlbiBhbiBpbWFnZSBjcmVh
dGVzIG9yIGRlc3Ryb3lzIGRlY29kZWQgZnJhbWVzIGFuZCB3aGVuIGl0IGFkdmFuY2VzIGFuaW1h
dGlvbiBmcmFtZXMuCkBAIC0xMTYsMTAgKzExNyw2IEBAIHB1YmxpYzoKICAgICBmbG9hdCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBzaXplKCkuaGVpZ2h0KCk7IH0KICAgICB2aXJ0dWFsIE9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAK
LSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHZpcnR1YWwgRmxvYXRTaXplIG9yaWdpbmFs
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKTsgfQotI2VuZGlmCi0KICAgICBXRUJDT1JFX0VY
UE9SVCBFbmNvZGVkRGF0YVN0YXR1cyBzZXREYXRhKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1YWwgRW5jb2RlZERhdGFTdGF0dXMg
ZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCovKSB7IHJldHVybiBFbmNvZGVkRGF0
YVN0YXR1czo6VW5rbm93bjsgfQogCkBAIC0xNzMsOCArMTcwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYoKSB7IHJldHVybiBudWxscHRyOyB9CiAjZW5k
aWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9CkBAIC0xOTAs
OSArMTg2LDkgQEAgcHJvdGVjdGVkOgogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0
b3IpIHsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKSA9IDA7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVs
ZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGls
ZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICAv
LyBTdXBwb3J0aW5nIHRpbGVkIGRyYXdpbmcKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVs
U29saWRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4IDNjZDQ3NTA5MDFiZjAyNzAy
OTM4MDlmYmM1NmYxNzI0Yjg2ZGZiNmIuLjdmMGMwMTkyY2ZhZTQxNzQ3MWQyMDdjZjNmNWY2NWJj
OGM0OTk1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlckRhdGEuaCIK
KyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWlu
dDhDbGFtcGVkQXJyYXkuaD4KQEAgLTUxLDcgKzUyLDcgQEAgY2xhc3MgSW1hZ2VEYXRhOwogY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSG9zdFdpbmRvdzsKLSAgICAKKwog
ZW51bSBCYWNraW5nU3RvcmVDb3B5IHsKICAgICBDb3B5QmFja2luZ1N0b3JlLCAvLyBHdWFyYW50
ZWUgc3Vic2VxdWVudCBkcmF3cyBkb24ndCBhZmZlY3QgdGhlIGNvcHkuCiAgICAgRG9udENvcHlC
YWNraW5nU3RvcmUgLy8gU3Vic2VxdWVudCBkcmF3cyBtYXkgYWZmZWN0IHRoZSBjb3B5LgpAQCAt
MTUxLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoQ29udGV4dCgpIGNvbnN0
OwogI2VuZGlmCiAgICAgCi0gICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZvaWQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOwogCi0gICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGU6Ok5vcm1hbCk7CisgICAgc3RhdGljIHZvaWQgZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIGlubGluZSB2b2lkIGdl
bmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmNDVjM2ZkNmQzMzg0MWJjMDM1NTVmMDdjOTAyYzkxZDUxMWNkYTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9u
cy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIK
KyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gT3B0aW9ucz4KKyAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhPcHRpb25zLi4uIG9wdGlvbnMpCisgICAgeworICAgICAgICBzZXRPcHRpb24ob3B0aW9u
cy4uLik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gT3ZlcnJyaWRlcz4KKyAg
ICBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3RoZXIs
IE92ZXJycmlkZXMuLi4gb3ZlcnJyaWRlcykKKyAgICAgICAgOiBJbWFnZVBhaW50aW5nT3B0aW9u
cyhvdGhlcikKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvdmVycnJpZGVzLi4uKTsKKyAgICB9
CisKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucygpID0gZGVmYXVsdDsKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gZGVmYXVsdDsKKworICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9j
b21wb3NpdGVPcGVyYXRvcjsgfQorICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2JsZW5kTW9kZTsgfQorICAgIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUoKSBjb25z
dCB7IHJldHVybiBtX2RlY29kaW5nTW9kZTsgfQorICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX2ludGVycG9s
YXRpb25RdWFsaXR5OyB9CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZpcnN0
LCB0eXBlbmFtZS4uLiBSZXN0PgorICAgIHZvaWQgc2V0T3B0aW9uKEZpcnN0IGZpcnN0LCBSZXN0
Li4uIHJlc3QpCisgICAgeworICAgICAgICBzZXRPcHRpb24oZmlyc3QpOworICAgICAgICBzZXRP
cHRpb24ocmVzdC4uLik7CisgICAgfQorCisgICAgdm9pZCBzZXRPcHRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IpIHsgbV9jb21wb3NpdGVPcGVyYXRvciA9IGNvbXBvc2l0
ZU9wZXJhdG9yOyB9CisgICAgdm9pZCBzZXRPcHRpb24oQmxlbmRNb2RlIGJsZW5kTW9kZSkgeyBt
X2JsZW5kTW9kZSA9IGJsZW5kTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKERlY29kaW5nTW9k
ZSBkZWNvZGluZ01vZGUpIHsgbV9kZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGU7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRp
b24gPSBvcmllbnRhdGlvbjsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb246
Ok9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsg
fQorICAgIHZvaWQgc2V0T3B0aW9uKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25R
dWFsaXR5KSB7IG1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eTsg
fQorCisgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9jb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0
ZVNvdXJjZU92ZXIgfTsKKyAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGUgeyBCbGVuZE1vZGU6Ok5v
cm1hbCB9OworICAgIERlY29kaW5nTW9kZSBtX2RlY29kaW5nTW9kZSB7IERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMgfTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb24geyBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lIH07CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25EZWZhdWx0IH07Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcAppbmRleCA5YTZiMDE4ZDQyZmE3NDQ4N2QxNDdhYTZjZTY0NjZhMTll
ZWFlYjNkLi40OGVkN2M1MGU0NTllZjY3NGE2YmVjZmQ5YTA0ZDNjOWFhZjgyZjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTQwLDExICs0MCwxMSBAQCBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFtZSwgY29uc3QgRmxv
YXRTaXplJgogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5n
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
Ci0gICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVP
cGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZHN0UmVj
dCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAo
ZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC02Myw3ICs2Myw3IEBAIEltYWdl
RHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGCiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1F
KQogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihzaXplKCksIGNvbnRleHQpOwpAQCAtNzQsMTYgKzc0LDE1IEBAIHZvaWQgTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0CiAgICAgVGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZEltYWdlKG1fbmFtZSwg
Z3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5o
ZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRl
eHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRN
b2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwog
ICAgIFVOVVNFRF9QQVJBTShzcmNSZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5z
Zm9ybSk7CiAgICAgVU5VU0VEX1BBUkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2lu
Zyk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb21wb3Np
dGVPcCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9w
dGlvbnMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggM2U3Yzk2ZDk0
NzFmMTNmNDY5NjMxZmI2ZWY0ZDU0ZmY4NTI1MWIxYy4uMDI4NWUxZjhiOWEyYTUxNjMyZGZjNGYz
NzBhMmEwY2Q2MTNkODBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM5LDggKzM5LDgg
QEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAg
ICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgK
aW5kZXggZDBmZjY3ZWZlMWE2YzJmYjlkMmNlZGM3NTg3NWZkODgwZTZiNTczMS4uMzlkNDRiODY0
NTdiYzIyMDI4ZDY3N2JiZGRhNzRhMzk5MmUyYTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKIAogI2lmIFVTRShD
RykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC02Niw3ICs2Niw3IEBAIEludFNpemUg
bmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBib29sIG5hdGl2ZUltYWdl
SGFzQWxwaGEoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOwordm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKTsKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFn
ZVB0ciYpOwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggNzQ2NDBmNzA0ZWNlNDk2
ZGE0MGFmNDEzYmE2ZjRkOWJkZWFmNDE5Yi4uYTg5NWRhZGQwNDIxYjdlZDA5MTEyOGQyM2Y2NWY1
ZGQ5NDRhNDcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC0xNzksOCArMTc5LDcgQEAgc3Rh
dGljIHZvaWQgZHJhd1NoYWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIEltYWdlQnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3Vy
ZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAgIGRy
YXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChy
b3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBsYXllclNpemUpLCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsCi0gICAgICAgICAgICBJ
bnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRl
KCkpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdl
dCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwg
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxD
b21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUo
KSk7CiAgICAgfQogfQogCkBAIC0xOTIsOCArMTkxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRv
d0ltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVy
JgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2
ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHNoYWRvd1N0YXRl
Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0LCBzaGFkb3dTdGF0
ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRv
d1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhh
LCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTg3OCwzNyArODc2LDM3IEBAIHZvaWQg
ZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
aWxsU291cmNlJiBmaWxsU291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEs
IGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQu
c2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAgaWYg
KGNvbXBvc2l0ZU9wZXJhdG9yID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgYmxlbmRNb2RlID09
IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkKKyAg
ICBpZiAob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpID09IENvbXBvc2l0ZVNvdXJjZU92ZXIg
JiYgb3B0aW9ucy5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCAmJiAhY2Fpcm9TdXJm
YWNlSGFzQWxwaGEoc3VyZmFjZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3Jt
YWwpOwogICAgIGVsc2UKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRp
b24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICAg
ICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBv
cHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAg
RmxvYXRSZWN0IGRzdCA9IGRlc3RSZWN0OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0
cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KICAgICAgICAgQ2Fpcm86OnRyYW5zbGF0ZShw
bGF0Zm9ybUNvbnRleHQsIGRzdC54KCksIGRzdC55KCkpOwogICAgICAgICBkc3Quc2V0TG9jYXRp
b24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgQ2Fpcm86OmNvbmNhdENUTShwbGF0Zm9ybUNvbnRl
eHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5zaXplKCkpKTsKLSAgICAg
ICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAgQ2Fpcm86
OmNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zv
cm1Gcm9tRGVmYXVsdChkc3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0
aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0
aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXRzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZl
cnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFz
IGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQg
YmFjayBoZXJlLgogICAgICAgICAgICAgZHN0ID0gRmxvYXRSZWN0KGRzdC54KCksIGRzdC55KCks
IGRzdC5oZWlnaHQoKSwgZHN0LndpZHRoKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgZHJh
d1N1cmZhY2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIGltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd1N1
cmZhY2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoeSB0aGUgc2l6ZSBoYXMgdG8gYmUgcGFz
c2VkIGluIGFzIGFuIEludFJlY3QuCi0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChwbGF0
Zm9ybUNvbnRleHQuY3IoKSwgc3VyZmFjZSwgc2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSks
IGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4
dC5jcigpLCBzdXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHRvQ2Fpcm9PcGVyYXRvcihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxl
bmRNb2RlKCkpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xv
YmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgK
aW5kZXggMDg1ZTYxYTViM2M5YzdjOTcyMTZiM2M3YmNkNmQ3NjkyNThjYzg0Zi4uNTgzNGY0MzBm
MDVkZDE1ODM3MzhlMzFlNDMzZDI3MTQwYTZjZDJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTEz
OCw4ICsxMzgsOCBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBj
b25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUm
LCBjb25zdCBGbG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3Qg
VmVjdG9yPGNhaXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9h
dCwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0
YXRlJik7Ci12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3Vy
ZmFjZV90KiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3Rh
dGUmKTsKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRm
b3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dT
dGF0ZSYpOwogCiB2b2lkIGRyYXdSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQsIGNvbnN0IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAwNGYyYTlmZjU0Njlh
YTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNkMmFiLi5jYmVjMDZlNjYwZTJhM2Q2MDZhMzJiYzgxMTFj
MTI3NmYxMDAwZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAg
LTI3NiwxMSArMjc2LDExIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvCiAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwg
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRv
JiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRp
dmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOworICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCmluZGV4IGYxYjAyZDM0YWIyZmYyOWFkY2ZiODc0M2M4OTRjMWU0NjA4YjY3M2IuLjJm
NTE5ZDQ1NDc3ZDQzNzk4Yjc1OWE4MTUzNDYyYzk4MzUzN2NkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCkBAIC03NCw4ICs3NCw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAppbmRleCBlMDFlNjBiOWVlZTdiYTE4Mzk3
YTYzZWY0YTE3NjY3ZmZkYzRhNDVhLi4wZjcyNjU3MDI0ZWJhYzc0MGIwZTc4ZjczMmFjOTNmYjBk
ZGI3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcApAQCAtMzQ0LDI0ICszNDQsMjMgQEAgQmFj
a2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVy
biBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RD
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2VCdWZm
ZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAot
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCAgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5
TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3Rv
cmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29w
eUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUs
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpKTsKKyAg
ICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCk7Cisg
ICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50
OF90LCAyNTY+JiBsb29rVXBUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKaW5kZXggODIzZmYw
YzdkNzZjODNlYWVkNjNlYzk4ZmYxNGYwMmEzNDBiZjljMi4uZGUzMDRmMzVmNjUyOWNkNmZkMTU4
ZTlhMDNjOWYxMGMzZDViZmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTU3LDkgKzU3
LDkgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigq
cGl4ZWwpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKaW5kZXggODdjOTkwNzliYTBmYTE0
NTMyZWYyNTM3NmJhMjUwMjY4YWMwOTVmYi4uY2Q2YmI3MzBlNjE2MTkxOTNlY2U2MGE5N2VmODg4
ZDc3ZWZiNjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGltYWdlUGl4ZWxzLCBjb25zdCBJbgogICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0x
KSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAg
Y29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1Jl
Y3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOwor
ICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVj
dCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwgeyBDb21wb3NpdGVDb3B5IH0p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZTNm
YjM4NGRiMzI3OTQ2Mjk1OThjMjljYmE1MDczMTYzOTAxODhiOS4uZWUyNzM4ZjQyMTBjNjkyYzM1
YjkyYThkZTg5YWZkYTI3MGJkOGIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMjczLDEzICsy
NzMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAg
ICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxz
ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0
YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2lt
cGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJ
bWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2Us
IGNvbnN0CiAjZW5kaWYKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2Up
OwogCi0gICAgZmxvYXQgY3VyckhlaWdodCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0
KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3ViSW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChz
dWJJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQgY3VyckhlaWdodCA9IG9wdGlvbnMub3JpZW50YXRp
b24oKS51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgp
KSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOwogICAgIGlmIChjdXJySGVpZ2h0
IDw9IHNyY1JlY3QueSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM1OCwxNSArMzU4LDE1IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QKICAgICBhZGp1c3RlZERlc3RSZWN0ID0gcm91bmRUb0Rl
dmljZVBpeGVscyhhZGp1c3RlZERlc3RSZWN0KTsKICNlbmRpZgogCi0gICAgc2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisgICAgc2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9k
ZSgpKTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJl
IGF0ICgwLCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERl
c3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGFkanVzdGVkRGVzdFJlY3Qu
c2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0
LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUo
KSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAg
IGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewor
ICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigp
LnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAg
IGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAg
ICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhl
aWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAg
IC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5l
ZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0
ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwg
YWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSwgYWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsKQEAg
LTQwOCwxMyArNDA4LDEzIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9p
ZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJu
KGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0
aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdAogICAgIENHQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihj
b250ZXh0KTsKICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKIAot
ICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgIHNl
dFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4
dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAg
Q0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgMSwgLTEpOwpAQCAtNDM5LDExICs0MzksNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRp
bGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uu
b3JpZ2luYWxTaXplKCk7Ci0jZWxzZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5z
aXplKCk7Ci0jZW5kaWYKICAgICBpZiAodGlsZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKICAg
ICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGQz
NWZmMGVmZjk3MTk1MGVlZDFlM2ZkMDI2YmNkYTllYWZhMzRlNDYuLjgzN2I4NzczZjZlMzljMjc5
NTQzMzY2MjcyMDk4MDRiNjNjZWZlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zMzQsMTEgKzMzNCwxMSBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNr
aW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgogICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJ
bWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVT
RShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiAgICAgaWYgKCFpbWFnZUJ1ZmZlci0+
bV9kYXRhLnN1cmZhY2UpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIt
PmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTM1MSwxMyArMzUxLDEzIEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpCiAgICAgCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7
CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENv
bnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBkZXN0Q29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogI2Vsc2UKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhk
ZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAj
ZW5kaWYKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsK
ICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2Nl
bGVyYXRlZENvbnRleHQoKSkKQEAgLTM2NywxMCArMzY3LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwKIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFk
anVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAt
Mzc4LDE0ICszNzgsMTQgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBpZiAoIWNvbnRl
eHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQg
PT0gJmNvbnRleHQoKSB8fCBkZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAg
ICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5n
U3RvcmUpKSAvLyBEcmF3aW5nIGludG8gb3VyIG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5
LgotICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3As
IGJsZW5kTW9kZSk7CisgICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRl
eHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChSZWZQ
dHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyaW5nID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0
b3JlKSkKLSAgICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVz
dENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBpbWFnZUZvclJl
bmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1h
Z2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0
Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRl
cm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXgg
ZjAyZDVkNTY2MGE2YzhhMTExZDViYzgyMTBmNmQ1ZDlmZWFkM2JkOC4uODI5NDExNjYxZTk4NzA2
MGUwM2IzZjAzZTBlNmRiYzFlN2QyMDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAg
Q29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlKQogICAgIHJldHVybiBDb2xvcihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhl
bFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBp
bWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZl
IGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMgc21hbGxlciB0aGFuIHNpemUoKS4KICAgICBJbnRT
aXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBuYXRpdmVJbWFnZVNpemUoaW1hZ2UpOwpAQCAtNzks
NyArNzksNyBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29ucwogICAgIGlmIChzdWJzYW1wbGVkSW1h
Z2VTaXplICE9IHNyY1NpemUpCiAgICAgICAgIGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3Jj
UmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJ
bWFnZVNpemUpKTsKIAotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1w
bGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgbW9kZSwgb3JpZW50
YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1h
Z2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBj
bGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKaW5kZXggM2Q0M2NmYjQxMTFlN2I4YmYxZGZiMWIwZTc4MzMyZjY2YTJiMTQ5
Ni4uYTYwZjEyNWEwMTEwMzczNmJhNzUxN2UzNjNhYTRhOThkNjIxMDlkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNh
Y2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGRl
Y29kZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNpemUudW5jbGFtcGVkQXJlYSgpICogNCk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjY2LDcgKzI2Niw3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0CiAKICAgICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24o
b3ApOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkpOwogCiAgICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFnZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicg
dG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJbWFnZVJlY3QnCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKaW5kZXggOWJm
MTY3YzQ1NTQyMDE2MGI4YjBmODk3M2E3ZDE3OTU0ZjY2MTc1NS4uMjdkOWU3ODAwNzk4ZTNlMmQx
ZGRhMTJlZGZkNWQzNjAxYmZhMzk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtNzgsNyArNzgsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRy
aW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2lj
UmF0aW8pIG92ZXJyaWRlOwogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYjcxM2U4NWVmYzQ4NmFlMWFlMWUwZDczMDM2MWQ5YTU0
YjI4Yzg4Ny4uZDM5YjY2MmE0YWE4YWI2NDZiMzMxNzAxMDJkYjZmYzhjZDgyYTE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRp
YyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRT
Y2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCi1EcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAj
aWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWly
by4KQEAgLTQ5NiwyMyArNDk2LDE3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpCiAgICAgLCBt
X2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQogICAg
ICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0jaWYgVVNFKENHKQotICAgICwgbV9vcChvcCkKLSAgICAs
IG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSNlbmRpZgotICAgICwgbV9vcmllbnRhdGlvbihvcmll
bnRhdGlvbikKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewogI2lmICFVU0UoQ0cpCiAgICAg
VU5VU0VEX1BBUkFNKGltYWdlKTsKLSAgICBVTlVTRURfUEFSQU0ob3ApOwotICAgIFVOVVNFRF9Q
QVJBTShibGVuZE1vZGUpOwogI2VuZGlmCiB9CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBs
eShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIGNv
bnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9u
LCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRNb2RlLCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwg
bV9zcmNSZWN0LCBtX29wdGlvbnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7
CiAjZW5kaWYKQEAgLTUyOCw3ICs1MjIsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd05hdGl2ZUltYWdlJiBpdGVtKQogfQogI2VuZGlm
CiAKLURyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCitEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRyYXdQYXR0ZXJuKQogICAgICwgbV9pbWFnZShp
bWFnZSkKICAgICAsIG1fcGF0dGVyblRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKQpAQCAtNTM2
LDE0ICs1MzAsMTMgQEAgRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWMKICAgICAsIG1fZGVzdGluYXRp
b24oZGVzdFJlY3QpCiAgICAgLCBtX3BoYXNlKHBoYXNlKQogICAgICwgbV9zcGFjaW5nKHNwYWNp
bmcpCi0gICAgLCBtX29wKG9wKQotICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICwg
bV9vcHRpb25zKG9wdGlvbnMpCiB7CiB9CiAKIHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1f
aW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24sIG1fdGlsZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9y
bSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29wLCBtX2JsZW5kTW9kZSk7CisgICAgY29udGV4dC5k
cmF3UGF0dGVybihtX2ltYWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3Bh
dHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcHRpb25zKTsKIH0KIAogc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0
ZXJuJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggOGJjY2UxOWIy
NGUxZmY1ZjY1YjZiZjQ4Yzk0MTcwYzliN2UwMWZiOC4uY2YzY2Y5MjkzMGM0NmRiZTZjNzI5N2E1
YTkxY2UyNTEyNWNiYTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC02
NDEsMTYgKzY0MSwxNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBV
U0UoRElSRUNUMkQpCiBjbGFzcyBEcmF3TmF0aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucykpOwogICAgIH0KIAogICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBt
X3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCkBAIC02NjIsMTkgKzY2MiwxNSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBt
X2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFJlY3Qg
bV9zcmNSZWN0OwotI2lmIFVTRShDRykKLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX29wOwotICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSNlbmRpZgotICAgIEltYWdlT3JpZW50YXRpb24gbV9v
cmllbnRhdGlvbjsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogI2Vu
ZGlmCiAKIGNsYXNzIERyYXdQYXR0ZXJuIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPERyYXdQYXR0ZXJuPiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQorICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3
UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpOwogICAgIH0KIAogICAgIGNvbnN0IEltYWdlJiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KQEAgLTY4NSw3ICs2ODEsNyBA
QCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNp
bmc7IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBE
cmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CiAKQEAgLTY5Nyw4ICs2OTMsNyBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uOwogICAgIEZsb2F0UG9pbnQgbV9waGFzZTsKICAgICBGbG9hdFNpemUgbV9zcGFj
aW5nOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7Ci0gICAgQmxlbmRNb2RlIG1fYmxlbmRN
b2RlOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKIC8vIElzIERy
YXdpbmdJdGVtIGJlY2F1c2UgdGhlIHNpemUgb2YgdGhlIHRyYW5zcGFyZW5jeSBsYXllciBpcyBp
bXBsaWNpdGx5IHRoZSBjbGlwIGJvdW5kcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAppbmRleCBlNzk3YTdmZDQyODcxOGQzOTcwODAyNTRhMmZmZDYxNjIzY2E2NTRl
Li5lMjBmM2VkMTNjYjZlNTVmNzgyZThjOWFkYzEzMDg3MmRlNmVmMTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0xMjcsMTYgKzEyNywxNiBAQCBJbWFn
ZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdAogfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVT
RShESVJFQ1QyRCkKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQor
dm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRl
bT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKSk7CisgICAgRHJh
d2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3
TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogI2VuZGlmCiAK
LXZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBl
bmRJdGVtKERyYXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpKSk7CisgICAgRHJh
d2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3
UGF0dGVybjo6Y3JlYXRlKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3
SXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMx
Nzk4YzFiMmQ0NzQzNzQ5OGZjMzE1YWMxNjNkMzVlNDY3NTM3ZjAuLjUxNmQ0ZGY4YzdmZDllYjVm
Mjk5NzU2NThkZDc2M2QxODAwYzNjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaApAQCAtOTIsOSArOTIsOSBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUm
IHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAjaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggYmVmM2Fk
OTA3MWVlOGM0NTBkOTFmOWJmOTgyNDg1NTU4MGUxZjQxNy4uZTRkNzI5NTdiMGNkZTg3ZjE3ZmY5
NzJmY2I3MTk3Yzk1OWYzMzBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVC
bGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlU291cmNlT3Zl
ciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIHsgQ29tcG9z
aXRlU291cmNlT3ZlciwgbV9tb2RlIH0pOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5k
ZXggNTMyM2JlZGFhNTcwYTRiMjEyNDE2OGM0NjViNDk1MWMwNDFmNDM5YS4uZDU2ZGI0MGMwNDk0
ZGIxNzNmMDAxNzQ0YjVjMWJjNGQyYzFhNWEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3MCw4
ICsyNzAsOCBAQCB2b2lkIEZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAg
ICAgICBJbnRSZWN0IGFkanVzdGVkRGVzdGluYXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0g
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJl
Y3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigp
OwogICAgICAgICBJbnRSZWN0IHNvdXJjZTJSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5h
YnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3Vy
Y2UyUmVjdCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJj
ZUluKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVy
MiwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZTJS
ZWN0KSk7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZl
ciwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGluYXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZVJl
Y3QpLCB7IENvbXBvc2l0ZVNvdXJjZUluIH0pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKaW5kZXggYjAyZTI4ZWRjZDQwN2ZkZmY4
Y2JlYTc4YWQxYTZlN2IwYzdiNThhOS4uMDgyZjE5NDRlOTQ1OTZlYzRkNjkxMjA2YmQ0NWI0MTIy
NTExOTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcApAQCAtODg1LDE1ICs4ODUsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2EKICAgICBpZiAoIUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnMoQ29tcG9zaXRl
Q29weSk7Ci0gICAgaWYgKG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkKLSAgICAgICAgcGFp
bnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24gPSBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247Ci0K
ICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VHU3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxl
LmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250
ZXh0LmRyYXdJbWFnZShnc3RJbWFnZS0+aW1hZ2UoKSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwg
cGFpbnRpbmdPcHRpb25zKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShnc3RJbWFnZS0+aW1hZ2Uo
KSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgeyBDb21wb3NpdGVDb3B5LCBtX3JlbmRlcmluZ0Nh
bkJlQWNjZWxlcmF0ZWQgPyBtX3ZpZGVvU291cmNlT3JpZW50YXRpb24gOiBJbWFnZU9yaWVudGF0
aW9uKCkgfSk7CiB9CiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCA1MGUwYzNj
N2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5YWRhMDJjLi4xZDJhZjY5ZmQ2ZmE3ODNmMGZjMTY2
MWE4NjgwYzJiMTA2OGMxNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTQ5LDE0ICs1NDksMTQgQEAgSW1hZ2VE
cmF3UmVzdWx0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXQKICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1Rp
bGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3RydWN0
IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRh
PFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxp
dHksIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKKyAgICBzdHJ1Y3QgRHJhd05hdGl2ZUlt
YWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJv
X3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywg
ZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZl
SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0
aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCku
Z2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwg
YXJnPDY+KCksIGFyZzw3PigpLCBhcmc8OD4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJn
PDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU2Nywx
NyArNTY3LDE3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QKIAogICAgIFVOVVNFRF9QQVJBTShp
bWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsK
LSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19z
dXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJh
dG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVu
ZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4o
aW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWly
bzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRN
b2RlKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRp
bmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEludFNp
emUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+IHsKKyAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmlu
YWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxv
YXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd1Bh
dHRlcm4oKSA9IGRlZmF1bHQ7CiAKICAgICAgICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0
aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fp
cm86OmRyYXdQYXR0ZXJuKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQo
KSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpLCBhcmc8
Nj4oKSwgYXJnPDc+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKGNvbnRleHRG
b3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBh
cmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpLCBhcmc8Nj4oKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01ODgsNyArNTg4LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QKIAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsK
ICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3Vy
ZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSkpOworICAgICAg
ICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50
U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5k
ZXggZGJkNjcyMzE0ODRmOTE4NzIxY2MwYmZkZDg2Mzg1ZTdmZTViODlmOS4uODI2MGM0OGFkNzk4
Njg0YzZlNTdjMWQ2NmRmYmU2ZDAxMDFjMWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjcsOCArNjcsOCBAQCBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6SW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Oklt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRp
bGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNv
cmU6OkJsZW5kTW9kZSwgV2ViQ29yZTo6SW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlID0gV2Vi
Q29yZTo6QmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCmluZGV4
IGQ3YTBlOTgzOTcxOGMzMTBlYTFmMjU5YTVhZjRlNDFhZWU4MmM1MWMuLjlhZTJhNzJlOTBmOTVi
OWFhYTQ2NDg3ODhjNmYyN2ExNzdjOGZkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCkBAIC03
NjUsNyArNzY1LDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGwKIH0KIAogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lD
Qml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFs
SW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxB
bHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZl
SW1hZ2VTaXplID0gYml0bWFwU2l6ZShpbWFnZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBk
ZXZpY2VCaXRtYXA7CkBAIC03NzQsMTAgKzc3NCwxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFn
ZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUoZGV2
aWNlQml0bWFwLmdldCgpKTsKLSAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBk
ZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBpbWFnZUludGVycG9sYXRpb25RdWFs
aXR5LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0
Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKIH0KIAotdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQy
RDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkK
K3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNv
bnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgYXV0byBiaXRtYXBTaXplID0gaW1hZ2Ut
PkdldFNpemUoKTsKIApAQCAtODA5LDE2ICs4MDksMTYgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGlt
YWcKICAgICBpZiAoIXNob3VsZFVzZVN1YmltYWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNpemUu
aGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkRGVz
dFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAotICAg
IFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVP
cGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBs
YXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5k
TW9kZSgpKTsKIAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRv
IGJlIGF0ICgwLCAwKS4KICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKGFkanVzdGVkRGVzdFJlY3Qu
eCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7CiAgICAgY29udGV4dC0+U2V0VHJhbnNmb3JtKHRy
YW5zZm9ybSk7CiAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkp
OwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKLSAg
ICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJv
bURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0
aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigp
ICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgY29uY2F0Q1RNKHBsYXRmb3Jt
Q29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCku
dXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJl
Y3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0
aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5l
ZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUu
CiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVzdFJl
Y3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwgYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSwg
YWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsKQEAgLTg0MiwxNCArODQyLDE0IEBAIHZvaWQgZHJh
d05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElE
MkQxQml0bWFwKiBpbWFnCiAgICAgICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybShjdG0pOwogfQog
Ci12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRl
eHQsIElXSUNCaXRtYXAqIHRpbGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2
b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQs
IElXSUNCaXRtYXAqIHRpbGVJbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBjb250ZXh0ID0gcGxh
dGZvcm1Db250ZXh0LnJlbmRlclRhcmdldCgpOwogICAgIFBsYXRmb3JtQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihwbGF0Zm9ybUNvbnRleHQpOwogCiAgICAgY2xpcChwbGF0Zm9ybUNvbnRl
eHQsIGRlc3RSZWN0KTsKIAotICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZv
cm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBTdGF0ZTo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21wb3NpdGVPcGVy
YXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIGF1dG8gYml0bWFwQnJ1c2hQcm9w
ZXJ0aWVzID0gRDJEMTo6Qml0bWFwQnJ1c2hQcm9wZXJ0aWVzKCk7CiAgICAgYml0bWFwQnJ1c2hQ
cm9wZXJ0aWVzLmV4dGVuZE1vZGVYID0gRDJEMV9FWFRFTkRfTU9ERV9XUkFQOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5oCmluZGV4IDA2ZjY1NjE4ZWIyOTA3Yzg1ZTE0ZjYwZmNhNjMzYjA4ODY5YjJlOGEuLmJj
Y2Y2NTY5ZDg4YzU0YTEzZmNhZjA3MjJhOTBiMzg4MzFiOGQ5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25z
LmgKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBj
b25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGb250JiwgZG91Ymxl
LCBjb25zdCBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+JiBnbHlwaHMsIGNvbnN0IFZlY3RvcjxmbG9h
dD4mIGhvcml6b250YWxBZHZhbmNlcywgY29uc3QgVmVjdG9yPERXUklURV9HTFlQSF9PRkZTRVQ+
JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dT
dGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJ
V0lDQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNv
bnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiB2b2lkIGRyYXdQYXRoKFBsYXRmb3JtQ29u
dGV4dERpcmVjdDJEJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNo
YWRvd1N0YXRlJik7Ci12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwg
SVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Cit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogdm9pZCBkcmF3V2l0aG91dFNo
YWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdS
ZWN0LCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4mIGRyYXdD
b21tYW5kcyk7CiB2b2lkIGRyYXdXaXRoU2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwg
Y29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDZiYjY0NGEyYjY1ZTIzNGMx
NWZlM2NmZmY5ZWI3MzkxOTQ0ZDQxYzEuLjQ0MjVmZDI2YWJlODU0NTFkMmMwMzJmMzZhMjZhNTdl
ZTMxZTJiMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcxLDgg
KzcxLDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNp
emUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92
ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0
IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3Qy
RC5jcHAKaW5kZXggNGU0ZDg4ZGU0NDQxZmUzZDY1NjdjNmU4YThmMjhhNTVlODMwNjg3Yi4uYzYw
Mzg1MWNkNTM1MDY0NTZlY2I3ZjBjOTJhMDQzODA5MmM4MWE5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVj
dDJELmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxT
b2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3Io
KTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7CiAgICAgYXV0byBwbGF0Zm9ybUNvbnRleHQg
PSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0RyYWdJbWFnZUlPUy5tbQppbmRleCAxNDdjMmQwYjViM2ZlOTgxMTBiMGZjM2FjODFmNmJi
ZDc2ZmE4YWRkLi41MDI3OTkwY2U1NWU0NjFiMmRkODJiOWMzMjllOWQ5YTMyZjgwZTliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KQEAgLTk2LDcgKzk2
LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2Us
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24KICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNv
bnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRqdXN0
ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAgICAgICBjb250ZXh0LmRy
YXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50
YXRpb24pKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCks
IHsgb3JpZW50YXRpb24gfSk7CiAgICAgfV07CiAgICAgcmV0dXJuIGltYWdlQ29weS5DR0ltYWdl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggOTAxYzQxMTBlMWM1NmJhNjBhNGRkM2JhN2I5M2ZhYWY2MDQxY2IzMy4uNzQ4
MmNlMDIwYzk0MTBmNTZlYjA2MDRmM2M1M2JmOWIxYmQyNmM4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC05NTUsNyArOTU1
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICAgICAgYXV0byBpbnRlcnBv
bGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdM
YXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9k
ZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAg
ICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2Vv
bWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkp
LCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGlu
Z09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgaW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0
byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRl
c3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0
cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIHsgY29tcG9zaXRlT3AsIGJnTGF5
ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICAgICAg
ICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5n
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAg
ICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0Zv
ckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggOTEzYmI0MTNiOTQyZjFlMDYyNmNmNThjMTQ1
YWIzMjZiNzFjYzI5Ni4uN2FjMDRiOGJhNGY0MTUxM2IzZmNiYWYxOTMxYmNmNDQ4MDVjOTQ4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRT
bmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29z
ZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0
LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAg
ICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRhdGlv
bigpLCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojpw
YWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFp
bnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBm
NTFlMmZlYjM3ZTFmY2YwZmQwZTc5MWFlNjRmMDNlZTg4YTJhN2M4Li4zOTM1Y2I0NWExNGU2ZDc2
ODc5YTVkNzE4ZTUwYTQwNWYzOTQ4YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgog
ICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9m
ZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlzc2lu
Z0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNzaW5n
SW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGlt
YWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50YXRp
b24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1h
Z2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCB7IGltYWdlT3JpZW50YXRpb24oKSB9KTsKICAg
ICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAK
QEAgLTYzMiw3ICs2MzIsNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50
b1JlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICBkb3du
Y2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7
CiAKICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1h
Z2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQo
KS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24o
KSwgaW50ZXJwb2xhdGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIHsgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlv
biB9KTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3RE
ZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZENsaWVu
dFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggMGRmZTI4Mjc2
NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NC4uNGZlODU4NjI1YzkyOWQ4MGJlY2FmZWE2
NmYwNjRlMzQyMTgxMjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICpp
bWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRhdGlv
bigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGln
bmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIEN1
cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0NGNiMjAwMWMwYmU4YWI0
Mjc3NmY1NTc1NmUxNDQwMzc1YzAxN2JhLi5hNDJjZTZlYzJkNjkzOWMwMDE2MWYxNzliZTI2NDRl
MTI0MjkyNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90
dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChh
bGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0
KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgq
c25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBj
b250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0KTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IDVjNTZiNjk5OTViYzkyZjRjYTg4MWUyYjkxZTlmMzdmZjVjMzhmNTIuLjAwYWJjMGQxMjcz
YjBmZWNlMDEzNzdlZTliOThjYWM3ZDVmODZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNv
bnRhaW5lclNpemUoKSBjb25zdAogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdG
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29u
dGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21l
bnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXQKIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KGluaXRpYWxGcmFn
bWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBk
c3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIEltYWdlRHJhd1Jlc3Vs
dCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucyk7CiAK
ICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
MjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogICAgIGlmICghYnVmZmVyKSAvLyBm
YWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBk
cmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVj
dCgpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250
Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5
QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0NywxNCAr
MjQ3LDE0IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFw
aGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQg
cGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKICAgICBHcmFwaGljc0Nv
bnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0
bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAgICBkcmF3KGxvY2FsQ29u
dGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9y
bWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsK
KyAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgcmV0dXJuIG5h
dGl2ZUltYWdlOwogfQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBjb250YWlu
ZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVS
TCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5lclJl
Y3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXplKTsKICAgICB6b29tZWRD
b250YWluZXJSZWN0LnNjYWxlKGNvbnRhaW5lclpvb20pOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZv
aWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNp
emUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsK
ICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAg
cmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5l
clNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXpl
LCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5v
cm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVy
U2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUs
IHpvb21lZENvbnRhaW5lclJlY3QpOwogICAgIGlmIChjb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNr
KCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCkBAIC0yODYs
MTAgKzI4NiwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHVuc2NhbGVkUGF0dGVy
blRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VC
dWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNr
KGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVk
U3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJl
Y3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI5OCwxMSArMjk4LDExIEBAIEltYWdlRHJh
d1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjCiAgICAgQVNTRVJUKHZpZXcpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1v
ZGUoKSk7CiAgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCiAg
ICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LmFscGhhKCk7Ci0gICAgYm9vbCBjb21wb3NpdGluZ1Jl
cXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3VyY2VP
dmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CisgICAg
Ym9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBvcHRpb25zLmJsZW5kTW9k
ZSgpICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRp
bmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgIGNvbnRleHQuYmVnaW5UcmFu
c3BhcmVuY3lMYXllcihhbHBoYSk7CiAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggMDc1NDI0ZmM3NWRiZGUwOTkxNzBmZjNmNmVi
YTZlNmM3MWZkMmUxNS4uNjE0NTg1MzQwM2I0NzdhZWM3MTFjOGRkNjJmODgzNjU0OTllMDJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAgLTk0LDEwICs5NCw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIGV4
cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwg
ZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29u
dGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Is
IGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0b1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVS
TCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAg
ICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBp
bml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KTsKIAogICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWlu
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcAppbmRleCBjZjhjYzNlNWNlYzhlODEyZGU2OWE5ZjQ0YWRiYjdiMDVjNTVjMDA1Li5kNzBh
NjQwYzZhMDQ5MWU3ZTE2N2Y5NGMxODBlMjc5MWEzMWVhYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM0LDE2
ICszNCwxNSBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAog
ICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkp
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3
UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVybiBtX2ltYWdl
LT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJa
b29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSk7CisgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4
dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJM
LCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVy
U2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVu
ZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1f
Y29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMp
OwogfQogCiBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApp
bmRleCA4NjlkMDk3MWM1YjJmZTVkNDk1MWRkNjAzNDBhZTM2M2NmNzc2ZjA0Li41N2IyMDRkOTgz
ZmIwN2IxYTdlZDYxYTFhZmViNGViN2Y4YWEwZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAtNTMsOSArNTMsOSBAQCBw
dWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJp
bnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogCiAg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggNTUyZWYxYThmZTJkNTU1NjQzYWU5NWM1NDVhNjA1Y2Y3NWE3YjM1
Yy4uZDFmZWZjNmU4M2Q2MTMxM2IxYmNjMWMzYTE3ZTQ2MzFhMDY0ODlmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2
MTgsNyArMjYxOCw3IEBAIHN0YXRpYyB2b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQ
YWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRlCiAgICAgaWYgKCFncmFwaGlj
c0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSksIHJlbmRlckltYWdlLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgeyByZW5kZXJJbWFnZS5pbWFnZU9yaWVudGF0
aW9uKCkgfSk7CiAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377115</attachid>
            <date>2019-08-23 01:29:08 -0700</date>
            <delta_ts>2019-08-23 01:34:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823012907.patch</filename>
            <type>text/plain</type>
            <size>164691</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uZjUzYjY0M2QzZjQ0OTFiNmY5ODgxZjRkNjE2OWNm
OGRjMzkwM2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0yMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd1BhdHRlcm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
cmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0w
OC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IERpc2FibGUgQ29udGVudCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlZGUzNTFkMmY3Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi5mNWJjOGJjOTI3
MTVjNzljMmI2ZWVlNmYwODFlOGM5ODRhZGE3ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE5LTA4LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsIGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFy
Z3VtZW50IG9mIHR5cGUgSW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkg
bm93IHRha2VzIGFuIEltYWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0
aW9uSW5mb3JtYXRpb24pOgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0
aGUgc2ltdWxhdG9yIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2
ZjljYjVkYS4uMjdhNjFjZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjA4NCw2ICsyMDg0LDcgQEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZH
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYx
MkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlP
d25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRC
NzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4Lmgg
Ki87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdG
MjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtOTQxNyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4
IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhU
c1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAw
MDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVY
VHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAw
MDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3Qzcg
LyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAw
NEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2
MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYx
QUQ5RjFBMzkwNEMzMDAwMTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAw
Q0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEg
LyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJ
bWFnZU9yaWVudGF0aW9uLmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8q
IEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAv
KiBJbWFnZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIElt
YWdlU291cmNlLmggKi8sCkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1
N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRB
ODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgw
MEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdB
RTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2
NTIwNGU3OWZjYmE1YzM2YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJh
NTVkZjMwMjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCAr
MzIzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5y
ZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
YWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFw
IG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0
YSkpOwpAQCAtMzczLDEwICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0K
IAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXpl
UXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUu
cmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0
YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNp
emVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUg
YSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUo
V1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJp
dG1hcD4mIGV4CiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAt
PmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBv
aW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0
aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwot
Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0
aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5k
ZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkg
fSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1
dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAg
KzY0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAg
ICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5t
X2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFs
aXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCku
ZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNp
emVRdWFsaXR5KSB9KTsKIAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShi
aXRtYXBEYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4
NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUx
MDc2MmJlNGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+
KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAg
aWYgKHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxl
bmRNb2RlIH0pOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29t
cG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAg
IGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3
SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3As
IGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3Jt
YWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAg
ICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0
UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVt
ZW50JiBzb3UKICNlbmRpZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkg
ewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xv
YmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3Qs
IHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQg
fSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVs
bENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAg
IGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3Qs
IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxD
YW52YXNFbGVtZW50JiBzb3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jh
c2UoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xl
YXJDYW52YXMoKTsKLSAgICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRz
dFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0
ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6
ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZh
cygpOwotICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZl
ciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5n
bG9iYWxCbGVuZCB9KTsKICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
LCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgp
Lmdsb2JhbEJsZW5kIH0pOwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAt
MTczMCwxNyArMTczMCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3Jp
Z2luKCZpbWFnZUJpdG1hcCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5n
bG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVj
dCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVu
ZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNG
dWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVj
dCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFz
KCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVD
b3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZl
cigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3
SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVy
LCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwg
c3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9
CiAKQEAgLTE4MjksMTQgKzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBj
LT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBk
cmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdl
LCBkZXN0LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3Jj
LCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0
YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMp
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAg
LTE4NjUsNyArMTg2NSw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5j
b250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsK
ICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVm
ZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0lt
YWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMs
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVm
ZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIg
fSk7CiAKICAgICBjb21wb3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGIyYmQ0N2NiMTYxNGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3
OTAzN2M4OGMyZTVkMDc4YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkOwogICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogfQotICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQog
ewogICAgIC8vIFdoZW4gbmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2Rp
bmdTdGF0dXMgaXMgc2V0IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgz
LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBA
IC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2Vz
LCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQg
c2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhp
cywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Piht
X2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCks
IHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBp
bWFnZTsKLSAgICBpZiAoZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3Vz
KSB7CisgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3lu
Y2hyb25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NF
UlQoIW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyAr
MjE2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tn
cm91bmQpCi0gICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RS
ZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAg
ICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihD
b2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcs
NyArMjI3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJ
RVMoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1
cnJlbnRGcmFtZSAmJiAhbV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXpl
TmF0aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsKSk7CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVj
b2RpbmdBY3RpdmUgJiYgbV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxs
V2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNv
bG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihj
b250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41
KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXMKICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFu
Z2xlIGFuZCByZXR1cm5pbmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlz
aCBkZWNvZGluZy4KICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAg
ICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9y
KENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAg
ICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxs
b3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAg
ICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAl
cyBbd2FpdGluZyBmb3IgYXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywg
dGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7
CkBAIC0yNjQsMTQgKzI2NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VS
VChpbWFnZSk7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250
ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNv
bnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRh
dGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkp
LCB7IG9wdGlvbnMsIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsK
KyAgICBlbHNlCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSks
IG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxl
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3Rh
dHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRl
c3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpk
cmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
ICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0
dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMw
NSw3ICszMDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNo
YW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRp
bGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0
KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2
ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
QEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAg
Y3R4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJh
d1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogfQogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3
ZTg5OWJkY2Y1YzRkNDQ1YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmVi
NTI3NmI2MGMyYjg1OGUzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8
ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2Fy
eShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2
OTY4OWJkZGEzNDBhYzY3MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2Fl
NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGlj
IHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1h
Z2UmIGltYWdlLCBDb21wb3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2Uu
aXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwotICAgIAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlv
biA9IG9wZXJhdGlvbjsKKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAg
ICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVT
b3VyY2VPdmVyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0
QWxwaGEob3BhY2l0eSk7CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0K
IAogICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2Fs
ZSh0YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdl
LCBJbnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAg
ICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKQEAgLTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0
LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
LSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9w
ZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0
KTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChk
c3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7
CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFIKICAgICBkcmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBU
aWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+
ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRl
eCAyMWUxMzIzNTE4NWE0ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1
ZWIyODlhZjBiMGJhNzI5MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3
LDggKzQ3LDggQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jcm9zc2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVy
cmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIElt
YWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFk
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4
MTJiNjY0MzUxOGU1ODczNzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFh
MjI0OGY5MjBjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdS
ZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjbwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0
b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVu
ZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRl
eHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXpl
KCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXQKIH0KIAogdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAg
ICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2Vu
ZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBm
b3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXpl
KCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAo
ZGVzdENvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0
VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJu
KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0
ODBhZjkzMzAzZWI2NzhkNzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZh
NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5oCkBAIC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdS
ZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsK
IAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWlu
dERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5w
dXRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dl
bmVyYXRlZEltYWdlLmgKaW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYy
MWE0MS4uMTA4Njg4Yjk3NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00
Niw5ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8q
ZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAw
OworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CmluZGV4IDVkNGVlMjgxNjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFh
ZDQ2MDQxMjg3MmQ5MjBlN2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAg
QEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25z
dCBGbG9hdFNpemUmIHNpemUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBk
ZWZhdWx0OwogCi1JbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RD
b250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Qu
c2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlYwogfQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5l
cmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZv
ciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUo
KTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29u
dGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFn
ZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVy
bihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJu
Q1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNo
ZWRJbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApp
bmRleCAxZDlkZDkwOGJjMDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMx
NDdmOTM0ZGRlMTkzMDc0OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6
ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qg
ZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZk
M2M5ZGY5MmU5Li4zMzUxM2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTcxNSw1NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZs
b2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vs
c2UKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0j
ZW5kaWYKLSAgICAgICAgCiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNyY1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJh
d1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5n
LCBvcHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9p
bnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3
UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
Tm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdU
aWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhS
dWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpT
dHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8g
SnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3
SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0
eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0
aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYs
MTMgKzc3MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWcKICAgICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSks
IGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dp
Y2FsU2l6ZSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2lu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZN
b3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Cisg
ICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdk
N2UzZTM1NDc2MmU4MGI4ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2Ri
ZTI1YjRmMmRmNDkzNjg4OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3Jp
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlIHsKICNlbmRpZgogfTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25l
LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRp
b25EZWZhdWx0KQotICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0
b3IpCi0gICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2Rp
bmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9u
KQotICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkp
Ci0gICAgewotICAgIH0KLQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5
ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9y
KQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5n
TW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9y
KQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5n
TW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQot
ICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZh
dWx0OyB9Ci0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25R
dWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UgewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZh
dWx0OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxh
Z3MpCkBAIC0zNDcsNyArMzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykg
fHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpO
b25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBA
IC0zOTUsMjMgKzM1OSwyMiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMoKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQ
YWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAg
IEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0g
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0
aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0Nv
bnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmlu
ZGV4IDk2MzY0OWY1NjlhZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYx
YWU0NmFlYTI4ODI3OWViYzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywy
NyArMzcsMjcgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQog
ewogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1w
bChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50
ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Nj
b3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkp
OwotICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9w
dGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1Rp
bGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFn
ZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9k
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRl
eHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRy
YXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywg
b3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3
VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGls
ZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0
cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJu
IGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwg
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsK
LSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2Nv
bXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0
aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmgKaW5kZXggYjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVl
NTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMs
OSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShD
QUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xp
bmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZj
ZjMyZGIxY2M2YjgwYTMzMTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2
NzZlYTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApA
QCAtMTM4LDMyICsxMzgsMjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQu
ZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3Iu
aXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBj
b2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2Uo
KSB8fCBub3RTb2xpZENvbG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBG
bG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAg
RmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhh
c1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2Nh
bGVkVGlsZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0x
ODQsNyArMTgwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdo
dCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAv
IHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJl
Y3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBv
cmllbnRhdGlvbik7CisgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTE5Niw3ICsxOTIsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlz
aWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxl
LmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2Nh
bGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZp
c2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVT
cmNSZWN0LCB7IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3Qs
IGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZs
b2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1
bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAg
ICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVu
ZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIz
Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0
IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRp
bGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgp
KTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVj
dCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0
aW9ucywgQmxlbmRNb2RlOjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0
LndpZHRoKCk7CkBAIC0yNTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0o
KS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZs
b2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBk
cmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9u
ZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQ
YXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24o
KTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTog
TWVyZ2Ugd2l0aCB0aGUgb3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQg
YSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxl
UnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAog
ICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9y
LmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNv
bG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWREcmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIElt
YWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQo
KSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNl
KGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1Bh
dHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBo
YXNlLCBzcGFjaW5nLCBvcCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAg
ICBzdGFydEFuaW1hdGlvbigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7
CiB9CiAKIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNp
Y1JhdGlvKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8g
PSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0j
ZW5kaWYKICAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgp
LCBGaXhlZCk7CiAgICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhl
aWdodCgpLCBGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCAzNjk5N2M4MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3
MzJmN2YzOWEzOTA5OTg4YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5n
dGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMg
b3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9u
IGZyYW1lcy4KQEAgLTExNiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JU
IEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRh
Q2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3Rh
dHVzOjpVbmtub3duOyB9CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2
aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsx
ODYsOSBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikg
eyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBD
b21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1
cHBvcnRpbmcgdGlsZWQgZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5Mzgw
OWZiYzU2ZjE3MjRiODZkZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5
OTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2lu
Y2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENs
YW1wZWRBcnJheS5oPgpAQCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVt
IEJhY2tpbmdTdG9yZUNvcHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBz
dWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tp
bmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEs
MTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAj
ZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
NWMzZmQ2ZDMzODQxYmMwMzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
KE9wdGlvbnMuLi4gb3B0aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4u
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3Zl
cnJyaWRlcy4uLiBvdmVycnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90
aGVyKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKwor
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBv
c2l0ZU9wZXJhdG9yOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmxlbmRNb2RlOyB9CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2RpbmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlv
blF1YWxpdHk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5
cGVuYW1lLi4uIFJlc3Q+CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4g
cmVzdCkKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlv
bihyZXN0Li4uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3Bl
cmF0b3I7IH0KKyAgICB2b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxl
bmRNb2RlID0gYmxlbmRNb2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRl
Y29kaW5nTW9kZSkgeyBtX2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQg
c2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Cisg
ICAgdm9pZCBzZXRPcHRpb24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxp
dHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisK
KyAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291
cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFs
IH07CisgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cyB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRp
b25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCmluZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWVi
M2QuLjQ4ZWQ3YzUwZTQ1OWVmNjc0YTZiZWNmZDlhMDRkM2M5YWFmODJmN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNp
emUmCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsK
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTYzLDcgKzYzLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEYKICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHNpemUoKSwgY29udGV4dCk7CkBAIC03NCwxNiArNzQsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXQKICAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFw
aGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdo
dCgpKSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4K
LSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHNyY1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3Jt
KTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9w
KTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9u
cyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYx
M2Y0Njk2MzFmYjZlZjRkNTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEy
YTBjZDYxM2Q4MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRl
eCBkMGZmNjdlZmUxYTZjMmZiOWQyY2VkYzc1ODc1ZmQ4ODBlNmI1NzMxLi4zOWQ0NGI4NjQ1N2Jj
MjIwMjhkNjc3YmJkZGE3NGEzOTkyZTJhNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQog
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY2LDcgQEAgSW50U2l6ZSBuYXRp
dmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNB
bHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpOwogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRy
Jik7CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQw
YWY0MTNiYTZmNGQ5YmRlYWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0
NGE0NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMg
dm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgSW1hZ2VCdQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNl
ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05h
dGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5k
ZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50
KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVy
cG9sYXRpb25EZWZhdWx0LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7
CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCks
IEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBv
c2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsK
ICAgICB9CiB9CiAKQEAgLTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1h
Z2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xv
YmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lLAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmds
b2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRm
b3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3Rh
dGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNo
YWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3
R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxT
b3VyY2UmIGZpbGxTb3UKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZl
KCk7CiAKICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29t
cG9zaXRlT3BlcmF0b3IgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxl
bmRNb2RlOjpOb3JtYWwgJiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlm
IChvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBv
cHRpb25zLmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VI
YXNBbHBoYShzdXJmYWNlKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVy
YXRpb24ocGxhdGZvcm1Db250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7
CiAgICAgZWxzZQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihw
bGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBD
YWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlv
bnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9h
dFJlY3QgZHN0ID0gZGVzdFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50
YXRpb246Ok5vbmUpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRo
ZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRm
b3JtQ29udGV4dCwgZHN0LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihG
bG9hdFBvaW50KCkpOwotICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwg
b3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBp
ZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29u
Y2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZy
b21EZWZhdWx0KGRzdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24o
KS51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24g
cmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2Vk
IGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQg
d2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNr
IGhlcmUuCiAgICAgICAgICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0
LmhlaWdodCgpLCBkc3Qud2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3Vy
ZmFjZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFj
ZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBv
bGF0aW9uUXVhbGl0eSgpLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3Jt
Q29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRT
aXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQg
aW4gYXMgYW4gSW50UmVjdC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3Jt
Q29udGV4dC5jcigpLCBzdXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHRvQ2Fpcm9PcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVz
dFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNy
KCksIHN1cmZhY2UsIHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9D
YWlyb09wZXJhdG9yKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1v
ZGUoKSksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxB
bHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRl
eCAwODVlNjFhNWIzYzljN2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRk
MTU4MzczOGUzMWU0MzNkMjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDgg
KzEzOCw4IEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxv
YXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0
b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUm
KTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNl
X3QqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYp
Owordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2Vf
dCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRl
Jik7CiAKIHZvaWQgZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAyM2Y2NTNlYmUzNzUyMWZjNzI1YWQzYmEx
OTJlMzU0MGJhYzE5ZWVkLi5kNTAzOWI5NzIxMTY0ZDIxZGJkMmQ4YTVkNzhkMDMzZWQxYjVkZmFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9h
dCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQo
KSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0
eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmll
bnRhdGlvbik7CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0
aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4
dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBi
bGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBz
dGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdO
YXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRl
LmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogLy8gVGhpcyBpcyBvbmx5
IHVzZWQgdG8gZHJhdyBib3JkZXJzLCBzbyB3ZSBzaG91bGQgbm90IGRyYXcgc2hhZG93cy4KQEAg
LTY2MCwxOSArNjYwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3Vu
ZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgQ2Fpcm86OmZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgcm91bmRlZEhv
bGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0
ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAg
ICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUp
OworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgaWYg
KGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAg
ICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCks
IEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgICAgIENhaXJv
OjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3Vs
ZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIuLjg1MmEy
NzZmN2ZjNjYxNmE5OTA0YWZlZWIwZTk5MDk3MDgwNjIzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDE3ICsyNzYsMTcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJ
bXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNj
YWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJB
TShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5n
ZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSht
X3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlv
bnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJv
OjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7Cisg
ICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQo
KSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBmMWIwMmQzNGFiMmZmMjlh
ZGNmYjg3NDNjODk0YzFlNDYwOGI2NzNiLi4yZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2MmM5
ODM1MzdjZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsOCAr
NzQsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxl
LCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6
ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKaW5kZXggZTAxZTYwYjllZWU3YmExODM5N2E2M2VmNGExNzY2N2ZmZGM0YTQ1YS4uMGY3MjY1
NzAyNGViYWM3NDBiMGU3OGY3MzJhYzkzZmIwZGRiN2QxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5j
cHAKQEAgLTM0NCwyNCArMzQ0LDIzIEBAIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZh
c3RDb3B5SW1hZ2VNb2RlKCkKICAgICByZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CiB9CiAK
LXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25z
dW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09
ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAg
ICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGlu
YXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBh
aW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lKSk7CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQor
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8SW1h
Z2U+IGltYWdlID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgaW1h
Z2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3ApOworICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYgbG9va1VwVGFibGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFn
ZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQw
YmY5YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2
ZUltYWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xl
UGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4g
Y29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVu
ZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJO
YXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNk
NmJiNzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRU
b0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBj
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAs
IC1pbWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2Uo
Y2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBp
bWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShj
Z0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlU2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2
MzkwMTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5z
Zm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsK
KyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgs
NyArMjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBv
cmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdl
LmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1
cnJIZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENH
SW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdl
LmdldCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAg
YWRqdXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7
CiAjZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1v
ZGUpOworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRl
T3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0
aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFu
c2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3Qu
eSgpKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAK
LSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAg
ICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURl
ZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9u
LnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNv
bnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3Rl
ZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVz
ZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0
IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhl
IG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVk
ZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgog
ICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0
LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFk
anVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9p
ZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zv
cm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsK
LSAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAg
IG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRv
UmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJh
dGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihv
cHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgp
ICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEs
IC0xKTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBm
bG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
RmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBG
bG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVS
ZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5
ZWFmYTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdl
QnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAg
ICByZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NU
T1JFKQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGlt
YWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEs
MTMgKzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVj
dCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShy
ZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5n
ZXQoKSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBi
YWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNl
bHNlCi0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29u
dGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAg
KzM2NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0
ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0
aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
bV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBi
bGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwg
bV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxv
YXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNj
YWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
ewogICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQu
aXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4g
Y29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBv
d24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAg
IGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9
IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VG
b3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7
CisgICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
UmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAg
ICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsK
KyAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZk
NWQ5ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdl
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxT
b2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3Io
cGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4
ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNt
YWxsZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0
aXZlSW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBh
ZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUp
LCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVz
dGVkU3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3Jj
UmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTEx
ZTdiOGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYz
YWE0YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9p
ZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXpl
LnVuY2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQg
UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFz
UGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2
Niw3ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBH
cmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBp
ZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VC
dWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1h
Z2VSZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1
NGY2NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2lj
SGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNp
emUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAg
Ym9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNl
ODVlZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLmQzOWI2NjJhNGFhOGFiNjQ2YjMz
MTcwMTAyZGI2ZmM4Y2Q4MmExNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBV
U0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpE
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJ
dGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVl
ZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMjMgKzQ5NiwxNyBAQCBEcmF3
TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaQogICAgICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwg
bV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQotI2lmIFVT
RShDRykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0jZW5k
aWYKLSAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAgLCBtX29wdGlvbnMob3B0
aW9ucykKIHsKICNpZiAhVVNFKENHKQogICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7Ci0gICAgVU5V
U0VEX1BBUkFNKG9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKICNlbmRpZgogfQog
CiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBj
b25zdAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdl
LCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9k
ZSwgbV9vcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwg
bV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCkBAIC01MjgsNyArNTIyLDcgQEAg
c3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdO
YXRpdmVJbWFnZSYgaXRlbSkKIH0KICNlbmRpZgogCi1EcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpE
cmF3UGF0dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zv
cm0ocGF0dGVyblRyYW5zZm9ybSkKQEAgLTUzNiwxNCArNTMwLDEzIEBAIERyYXdQYXR0ZXJuOjpE
cmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9waGFzZShw
aGFzZSkKICAgICAsIG1fc3BhY2luZyhzcGFjaW5nKQotICAgICwgbV9vcChvcCkKLSAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKKyAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewogfQogCiB2
b2lkIERyYXdQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7
Ci0gICAgY29udGV4dC5kcmF3UGF0dGVybihtX2ltYWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBt
X3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcCwg
bV9ibGVuZE1vZGUpOworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9k
ZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3Nw
YWNpbmcsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCmluZGV4IDhiY2NlMTliMjRlMWZmNWY2NWI2YmY0OGM5NDE3MGM5YjdlMDFm
YjguLmNmM2NmOTI5MzBjNDZkYmU2YzcyOTdhNWE5MWNlMjUxMjVjYmE3NjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjQxLDE2ICs2NDEsMTYgQEAgcHJpdmF0ZToKICNp
ZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2
ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERy
YXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3RhdGljIFJlZjxEcmF3TmF0
aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBGbG9hdFJl
Y3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRl
c3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgot
ICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7
CisgICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjYyLDE5ICs2NjIsMTUg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1f
ZGVzdGluYXRpb247CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKLSNpZiBVU0UoQ0cpCi0gICAg
Q29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7Ci0jZW5k
aWYKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgbV9vcHRpb25zOwogfTsKICNlbmRpZgogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4g
Y3JlYXRlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBzdGF0aWMgUmVmPERy
YXdQYXR0ZXJuPiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0
LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKTsK
ICAgICB9CiAKICAgICBjb25zdCBJbWFnZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
LmdldCgpOyB9CkBAIC02ODUsNyArNjgxLDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzcGFj
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjaW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd1Bh
dHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02OTcsOCArNjkzLDcgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFBvaW50IG1f
cGhhc2U7CiAgICAgRmxvYXRTaXplIG1fc3BhY2luZzsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBt
X29wOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9u
cyBtX29wdGlvbnM7CiB9OwogCiAvLyBJcyBEcmF3aW5nSXRlbSBiZWNhdXNlIHRoZSBzaXplIG9m
IHRoZSB0cmFuc3BhcmVuY3kgbGF5ZXIgaXMgaW1wbGljaXRseSB0aGUgY2xpcCBib3VuZHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTc5N2E3ZmQ0Mjg3
MThkMzk3MDgwMjU0YTJmZmQ2MTYyM2NhNjU0ZS4uZTIwZjNlZDEzY2I2ZTU1Zjc4MmU4YzlhZGMx
MzA4NzJkZTZlZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtMTI3LDE2ICsxMjcsMTYgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGls
ZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKIH0KIAogI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIERyYXdpbmdJdGVtJiBu
ZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdl
OjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1v
ZGUsIG9yaWVudGF0aW9uKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8
RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4
dGVudChuZXdJdGVtKTsKIH0KICNlbmRpZgogCi12b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0g
PSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGlt
YWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBvcCwgYmxlbmRNb2RlKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8
RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykp
KTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMTc5OGMxYjJkNDc0Mzc0OThmYzMxNWFjMTYzZDM1
ZTQ2NzUzN2YwLi41MTZkNGRmOGM3ZmQ5ZWI1ZjI5OTc1NjU4ZGQ3NjNkMTgwMGMzY2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTkyLDkgKzkyLDkgQEAgcHJp
dmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxl
UnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNU
MkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGJlZjNhZDkwNzFlZThjNDUwZDkxZjliZjk4MjQ4NTU1ODBl
MWY0MTcuLmU0ZDcyOTU3YjBjZGU4N2YxN2ZmOTcyZmNiNzE5N2M5NTlmMzMwZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCpp
bWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50
UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVy
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50
UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRp
bmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFn
ZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkpLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSB9KTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDUzMjNiZWRhYTU3MGE0YjIxMjQxNjhjNDY1
YjQ5NTFjMDQxZjQzOWEuLmQ1NmRiNDBjMDQ5NGRiMTczZjAwMTc0NGI1YzFiYzRkMmMxYTVhMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwCkBAIC0yNzAsOCArMjcwLDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24o
KTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFi
c29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVj
dCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250
ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0
LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQu
ZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2UyUmVjdCkpOworICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0
aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2VSZWN0KSwgeyBDb21wb3NpdGVTb3VyY2VJbiB9KTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VU
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwCmluZGV4IGIwMmUyOGVkY2Q0MDdmZGZmOGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkuLjA4MmYx
OTQ0ZTk0NTk2ZWM0ZDY5MTIwNmJkNDViNDEyMjUxMTk1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg4NSwxNSArODg1
LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1f
c2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwotICAgIGlmIChtX3JlbmRlcmluZ0Nh
bkJlQWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uID0g
bV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCiAgICAgYXV0byBnc3RJbWFnZSA9IEltYWdlR1N0
cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdl
KCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgY29udGV4
dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHsg
Q29tcG9zaXRlQ29weSwgbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkID8gbV92aWRlb1NvdXJj
ZU9yaWVudGF0aW9uIDogSW1hZ2VPcmllbnRhdGlvbigpIH0pOwogfQogCiAjaWYgVVNFKEdTVFJF
QU1FUl9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKaW5kZXggNTBlMGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFk
YTAyYy4uMWQyYWY2OWZkNmZhNzgzZjBmYzE2NjFhODY4MGMyYjEwNjhjMTZhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAK
QEAgLTU0OSwxNCArNTQ5LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0CiAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQo
KSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZS
dWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIENh
aXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewotICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWlu
dGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxv
YXRSZWN0LCBGbG9hdFJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRl
PiB7CisgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9u
LCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsK
ICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAg
IHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZv
clJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFy
ZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSwgYXJnPDg+KCkp
OworICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJl
cGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFy
Zzw0PigpLCBhcmc8NT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0
cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01NjcsMTcgKzU2NywxNyBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Us
IGNvbnN0CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9
IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJh
d05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1h
Z2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQog
Ci12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0cnVj
dCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZm
aW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlPiB7
CisgICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJh
dGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxv
YXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25z
PiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdQYXR0ZXJuKCkgPSBkZWZhdWx0OwogCiAgICAgICAg
IHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVw
bGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+
KCksIGFyZzw0PigpLCBhcmc8NT4oKSwgYXJnPDY+KCksIGFyZzw3PigpKTsKKyAgICAgICAgICAg
IENhaXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCku
Z2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwg
YXJnPDY+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRz
KSBvdmVycmlkZQpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAK
ICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdl
Lm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21t
YW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSks
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1Bh
dHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lk
IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRiZDY3MjMxNDg0ZjkxODcyMWNjMGJmZGQ4
NjM4NWU3ZmU1Yjg5ZjkuLjgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFmNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29y
ZGVyLmgKQEAgLTY3LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdS
ZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
V2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6
VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNv
cmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUsIFdlYkNvcmU6OkltYWdl
T3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0
b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSA9IFdlYkNvcmU6OkJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFn
ZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFn
ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVj
dDJET3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmNwcAppbmRleCBkN2EwZTk4Mzk3MThjMzEwZWExZjI1OWE1YWY0
ZTQxYWVlODJjNTFjLi45YWUyYTcyZTkwZjk1YjlhYWE0NjQ4Nzg4YzZmMjdhMTc3YzhmZGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgZHJhd0dseXBo
cyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291
cmNlJiBmaWxsCiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9s
YXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhh
LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFk
b3dTdGF0ZSkKIHsKICAgICBhdXRvIG5hdGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2Up
OwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gZGV2aWNlQml0bWFwOwpAQCAtNzc0LDEwICs3NzQs
MTAgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRm
b3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0
byBpbWFnZVNpemUgPSBiaXRtYXBTaXplKGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05h
dGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRh
dGlvbiwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRl
KTsKKyAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBz
aGFkb3dTdGF0ZSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERp
cmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25R
dWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25z
dCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewog
ICAgIGF1dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAKQEAgLTgwOSwxNiArODA5
LDE2IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFn
ZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERl
c3RSZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAv
IGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3Rh
dGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9z
aXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVu
dGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZShhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwog
ICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJl
Y3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRl
eHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6
ZSgpKSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7Cisg
ICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7
CisgICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24o
KS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAg
ICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBo
ZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAg
ICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBu
ZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVj
dCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCks
IGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBA
IC04NDIsMTQgKzg0MiwxNCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZwogICAgICAgICBjb250
ZXh0LT5TZXRUcmFuc2Zvcm0oY3RtKTsKIH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNv
bnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNvbnN0
IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKTsK
ICAgICBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIocGxhdGZvcm1Db250ZXh0
KTsKIAogICAgIGNsaXAocGxhdGZvcm1Db250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBTdGF0ZTo6
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3Is
IGJsZW5kTW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNv
bnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7
CiAKICAgICBhdXRvIGJpdG1hcEJydXNoUHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcEJydXNoUHJv
cGVydGllcygpOwogICAgIGJpdG1hcEJydXNoUHJvcGVydGllcy5leHRlbmRNb2RlWCA9IEQyRDFf
RVhURU5EX01PREVfV1JBUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCAwNmY2NTYxOGViMjkwN2M4
NWUxNGY2MGZjYTYzM2IwODg2OWIyZThhLi5iY2NmNjU2OWQ4OGM1NGExM2ZjYWYwNzIyYTkwYjM4
ODMxYjhkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lk
IGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYpOwog
CiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGaWxsU291
cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRm9udCYsIGRvdWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIHNob3J0
PiYgZ2x5cGhzLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFsQWR2YW5jZXMsIGNvbnN0
IFZlY3RvcjxEV1JJVEVfR0xZUEhfT0ZGU0VUPiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFn
cywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05h
dGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0
aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25R
dWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYp
Owogdm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IFBhdGgmLCBj
b25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0dGVy
bihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBJbnRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9p
ZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25z
dCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJik7CiAKIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lk
KElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpOwogdm9pZCBkcmF3V2l0aFNoYWRv
dyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0
LCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRl
clRhcmdldCopPiYgZHJhd0NvbW1hbmRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuaAppbmRleCA2YmI2NDRhMmI2NWUyMzRjMTVmZTNjZmZmOWViNzM5MTk0NGQ0MWMxLi40NDI1
ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3ZWUzMWUyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCmluZGV4IDRlNGQ4OGRlNDQ0MWZlM2Q2
NTY3YzZlOGE4ZjI4YTU1ZTgzMDY4N2IuLmM2MDM4NTFjZDUzNTA2NDU2ZWNiN2YwYzkyYTA0Mzgw
OTJjODFhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBD
b2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQog
ewogICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggMTQ3
YzJkMGI1YjNmZTk4MTEwYjBmYzNhYzgxZjZiYmQ3NmZhOGFkZC4uNTAyNzk5MGNlNTVlNDYxYjJk
ZDgyYjljMzI5ZTlkOWEzMmY4MGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tCkBAIC05Niw3ICs5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAg
ICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VT
Y2FsZSB9KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCB7IG9yaWVudGF0aW9uIH0pOwogICAgIH1dOwog
ICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDkwMWM0MTEwZTFjNTZiYTYw
YTRkZDNiYTdiOTNmYWFmNjA0MWNiMzMuLjc0ODJjZTAyMGM5NDEwZjU2ZWIwNjA0ZjNjNTNiZjli
MWJkMjZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAKICAgICAgICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25R
dWFsaXR5KGNvbnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwog
ICAgICAgICAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXco
KmltYWdlLCBwYWludEluZm8pOwotICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4
dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0
cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVy
LmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsIGludGVy
cG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1Rp
bGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21l
dHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNl
U2l6ZSgpLCB7IGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUs
IGludGVycG9sYXRpb24gfSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURy
YXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
Z0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hl
ZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4
IDkxM2JiNDEzYjk0MmYxZTA2MjZjZjU4YzE0NWFiMzI2YjcxY2MyOTYuLjdhYzA0YjhiYTRmNDE1
MTNiM2ZjYmFmMTkzMWJjZjQ0ODA1Yzk0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0
LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFs
aWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAog
dm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAz
ZWU4OGEyYTdjOC4uMzkzNWNiNDVhMTRlNmQ3Njg3OWE1ZDcxOGU1MGE0MDVmMzk0OGE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NjksNyArNDY5LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9
IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIg
KyBsZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIg
KyB0b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwogCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwg
eyBpbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJh
d24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzIsNyArNjMyLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBGbG9hdFJlY3QKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBk
YXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCiAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBk
ZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgIGF1dG8gZHJh
d1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVj
b2RpbmdNb2RlLCBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRv
IGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCB7
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFn
ZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3Vy
Y2UoKS5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCmluZGV4IDBkZmUyODI3NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMw
ODQuLjRmZTg1ODYyNWM5MjlkODBiZWNhZmVhNjZmMDY0ZTM0MjE4MTI1Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApA
QCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXpl
KCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRhdGlvbigp
LCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3Zl
cnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggNDRjYjIwMDFjMGJlOGFiNDI3NzZmNTU3NTZlMTQ0MDM3NWMwMTdiYS4uYTQy
Y2U2ZWMyZDY5MzljMDAxNjFmMTc5YmUyNjQ0ZTEyNDI5MjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjI3OCw3ICsyMjc4LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBh
bGlnbmVkUGx1Z2luUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA1YzU2YjY5OTk1YmM5MmY0Y2E4ODFlMmI5
MWU5ZjM3ZmY1YzM4ZjUyLi4wMGFiYzBkMTI3M2IwZmVjZTAxMzc3ZWU5Yjk4Y2FjN2Q1Zjg2ZWRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3OCw3ICsx
NzgsNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKIH0KIAogSW1h
Z2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpv
b20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjAy
LDcgKzIwMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAKICAgICBmcmFtZVZpZXcoKS0+
c2Nyb2xsVG9GcmFnbWVudChpbml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVz
dWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RS
ZWN0LCBzY2FsZWRTcmMsIG9wdGlvbnMpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZl
cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMSw3ICsyMjEsNyBAQCBOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KikKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgp
LCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGJ1
ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSk7CiAKICAgICAvLyBGSVhNRTogV0soQnVn
IDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4KICAgICBy
ZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CkBAIC0yNDcsMTQgKzI0NywxNCBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQog
ICAgIFBsYXRmb3JtQ29udGV4dERpcmVjdDJEIHBsYXRmb3JtQ29udGV4dChuYXRpdmVJbWFnZVRh
cmdldC5nZXQoKSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dCgmcGxhdGZvcm1D
b250ZXh0LCBHcmFwaGljc0NvbnRleHQ6OkJpdG1hcFJlbmRlcmluZ0NvbnRleHRUeXBlOjpHUFVN
ZW1vcnkpOwogCi0gICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3Qo
KSwgcmVjdCgpKTsKIAogICAgIHJldHVybiBuYXRpdmVJbWFnZTsKIH0KICNlbmRpZgogCiB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwg
Y29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwK
LSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
Y29udGFpbmVyU2l6ZSk7CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2FsZShjb250YWluZXJa
b29tKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNv
bnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAx
LCBDb2xvclNwYWNlU1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0
byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVy
KGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFs
RnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIGRyYXdGb3JDb250YWluZXIo
YnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxG
cmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKICAgICBp
ZiAoY29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKTsKIApAQCAtMjg2LDEwICsyODYsMTAgQEAgdm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUKICAgICB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0uc2NhbGUoMSAvIGltYWdlQnVm
ZmVyU2NhbGUud2lkdGgoKSwgMSAvIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCiAgICAg
Y29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgaW1hZ2UtPmRyYXdQYXR0
ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdl
LT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBh
dHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3
UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBA
IC0yOTgsMTEgKzI5OCwxMSBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwogICAgIEFTU0VSVCh2
aWV3KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0
KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRN
b2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0
ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChlbmNs
b3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAogICAgIGZsb2F0IGFscGhhID0gY29udGV4dC5hbHBo
YSgpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gY29t
cG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRNb2Rl
OjpOb3JtYWwgfHwgYWxwaGEgPCAxOworICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5z
cGFyZW5jeUxheWVyID0gb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpICE9IENvbXBvc2l0ZVNv
dXJjZU92ZXIgfHwgb3B0aW9ucy5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBh
bHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikg
ewogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwogICAgICAg
ICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVu
ZE1vZGU6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCmluZGV4
IDA3NTQyNGZjNzVkYmRlMDk5MTcwZmYzZjZlYmE2ZTZjNzFmZDJlMTUuLjYxNDU4NTM0MDNiNDc3
YWVjNzExYzhkZDYyZjg4MzY1NDk5ZTAyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCkBAIC05NCwxMCArOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmlt
YXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBleHBsaWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVy
Jik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0g
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVS
TCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9p
ZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlh
bEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
Ci0gICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUp
OworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBm
bG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0
IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVu
dD4gcm9vdEVsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggY2Y4Y2MzZTVjZWM4ZTgxMmRl
NjlhOWY0NGFkYmI3YjA1YzU1YzAwNS4uZDcwYTY0MGM2YTA0OTFlN2UxNjdmOTRjMTgwZTI3OTFh
MzFlYWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2VGb3JDb250YWluZXIuY3BwCkBAIC0zNCwxNiArMzQsMTUgQEAgRmxvYXRTaXplIFNWR0ltYWdl
Rm9yQ29udGFpbmVyOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRTaXplKHJvdW5kZWRJ
bnRTaXplKHNjYWxlZENvbnRhaW5lclNpemUpKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFNWR0lt
YWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5lcihjb250ZXh0LCBt
X2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIGRz
dFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIHJldHVybiBtX2lt
YWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWlu
ZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7
CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX2ltYWdlLT5kcmF3UGF0dGVybkZvckNv
bnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0
aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5n
LCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2ltYWdlLT5kcmF3UGF0
dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9v
bSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAogTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggODY5ZDA5NzFjNWIyZmU1ZDQ5NTFkZDYw
MzQwYWUzNjNjZjc3NmYwNC4uNTdiMjA0ZDk4M2ZiMDdiMWE3ZWQ2MWExYWZlYjRlYjdmOGFhMGQ0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29u
dGFpbmVyLmgKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICBtX2ltYWdlLT5jb21w
dXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBp
bnRyaW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5h
bDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDU1MmVmMWE4ZmUy
ZDU1NTY0M2FlOTVjNTQ1YTYwNWNmNzVhN2IzNWMuLmQxZmVmYzZlODNkNjEzMTNiMWJjYzFjM2Ex
N2U0NjMxYTA2NDg5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNjE4LDcgKzI2MTgsNyBAQCBzdGF0aWMgdm9pZCBp
bWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgSW50ZQogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgwLCAwLCBi
aXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCByZW5kZXJJbWFnZS5pbWFn
ZU9yaWVudGF0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSks
IHsgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgIGluZm8uaW1hZ2UgPSBz
aGFyZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377116</attachid>
            <date>2019-08-23 01:34:33 -0700</date>
            <delta_ts>2019-08-23 09:52:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823013433.patch</filename>
            <type>text/plain</type>
            <size>164908</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uZjUzYjY0M2QzZjQ0OTFiNmY5ODgxZjRkNjE2OWNm
OGRjMzkwM2QxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxOS0wOC0yMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd1BhdHRlcm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdO
YXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJl
cGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
cmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0w
OC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1Nd
IERpc2FibGUgQ29udGVudCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlZGUzNTFkMmY3Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi5mNWJjOGJjOTI3
MTVjNzljMmI2ZWVlNmYwODFlOGM5ODRhZGE3ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDE5LTA4LTIzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWxsIGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFy
Z3VtZW50IG9mIHR5cGUgSW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkg
bm93IHRha2VzIGFuIEltYWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0
aW9uSW5mb3JtYXRpb24pOgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0
aGUgc2ltdWxhdG9yIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2
ZjljYjVkYS4uMjdhNjFjZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjA4NCw2ICsyMDg0LDcgQEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZH
UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYx
MkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlP
d25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRC
NzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8q
IEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4Lmgg
Ki87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdG
MjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rp
dml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtOTQxNyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4
IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhU
c1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAw
MDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVY
VHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAw
MDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3Qzcg
LyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09w
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAw
NEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2
MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYx
QUQ5RjFBMzkwNEMzMDAwMTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAw
Q0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEg
LyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJ
bWFnZU9yaWVudGF0aW9uLmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8q
IEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAv
KiBJbWFnZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIElt
YWdlU291cmNlLmggKi8sCkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1
N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRB
ODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdl
UXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgw
MEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdB
RTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2
NTIwNGU3OWZjYmE1YzM2YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJh
NTVkZjMwMjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCAr
MzIzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5y
ZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
YWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFw
IG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0
YSkpOwpAQCAtMzczLDEwICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0K
IAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXpl
UXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUu
cmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0
YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNp
emVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUg
YSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUo
V1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRt
YXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJp
dG1hcD4mIGV4CiAgICAgYXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAt
PmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBv
aW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0
aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwot
Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0
aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5k
ZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkg
fSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1
dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAg
KzY0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAg
ICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5t
X2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFs
aXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCku
ZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNp
emVRdWFsaXR5KSB9KTsKIAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShi
aXRtYXBEYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4
NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUx
MDc2MmJlNGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+
KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAg
aWYgKHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+
ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxl
bmRNb2RlIH0pOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29t
cG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3Jj
UmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlm
IChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAg
IGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVj
dCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3
SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3As
IGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3Jt
YWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAg
ICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNy
Y1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0
UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVt
ZW50JiBzb3UKICNlbmRpZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkg
ewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xv
YmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3Qs
IHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQg
fSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVs
bENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAg
IGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3Qs
IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxD
YW52YXNFbGVtZW50JiBzb3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jh
c2UoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xl
YXJDYW52YXMoKTsKLSAgICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRz
dFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0
ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAg
ICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6
ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZh
cygpOwotICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZl
ciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5n
bG9iYWxCbGVuZCB9KTsKICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRl
LCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVm
ZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgp
Lmdsb2JhbEJsZW5kIH0pOwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAt
MTczMCwxNyArMTczMCwxNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3Jp
Z2luKCZpbWFnZUJpdG1hcCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3Qp
KSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5n
bG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVj
dCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVu
ZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNG
dWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAg
ICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVj
dCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFz
KCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVD
b3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZl
cigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3
SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNh
bnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVy
LCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENv
bXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZm
ZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwg
c3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9
CiAKQEAgLTE4MjksMTQgKzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBj
LT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBk
cmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdl
LCBkZXN0LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3Jj
LCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0
YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
Y29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAg
IGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMp
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAg
LTE4NjUsNyArMTg2NSw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5j
b250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsK
ICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVm
ZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0lt
YWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMs
IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVm
ZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIg
fSk7CiAKICAgICBjb21wb3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmlu
ZGV4IGIyYmQ0N2NiMTYxNGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3
OTAzN2M4OGMyZTVkMDc4YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNv
ZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJ
bnZhbGlkOwogICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRh
UmVjZWl2ZWQpOwogfQotICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVE
ZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQog
ewogICAgIC8vIFdoZW4gbmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2Rp
bmdTdGF0dXMgaXMgc2V0IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgz
LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFw
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBA
IC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2Vz
LCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQg
c2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhp
cywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Piht
X2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCks
IHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBp
bWFnZTsKLSAgICBpZiAoZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3Vz
KSB7CisgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3lu
Y2hyb25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NF
UlQoIW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyAr
MjE2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFz
RGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRG
cmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5n
TW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tn
cm91bmQpCi0gICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RS
ZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAg
ICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihD
b2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcs
NyArMjI3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJ
RVMoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1
cnJlbnRGcmFtZSAmJiAhbV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXpl
TmF0aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xl
dmVsKSk7CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVj
b2RpbmdBY3RpdmUgJiYgbV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxs
V2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNv
bG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihj
b250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41
KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXMKICAgICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFu
Z2xlIGFuZCByZXR1cm5pbmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlz
aCBkZWNvZGluZy4KICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAg
ICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9y
KENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAg
ICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxs
b3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAg
ICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAl
cyBbd2FpdGluZyBmb3IgYXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywg
dGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7
CkBAIC0yNjQsMTQgKzI2NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VS
VChpbWFnZSk7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250
ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNv
bnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRh
dGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2
ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkp
LCB7IG9wdGlvbnMsIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsK
KyAgICBlbHNlCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSks
IG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1
cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxl
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3Rh
dHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRl
c3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpk
cmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsK
ICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0
dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMw
NSw3ICszMDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFy
aWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNo
YW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFn
ZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRp
bGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0
KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2
ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
QEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAg
Y3R4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJh
d1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogfQogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3
ZTg5OWJkY2Y1YzRkNDQ1YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmVi
NTI3NmI2MGMyYjg1OGUzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8
ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2Fy
eShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2
OTY4OWJkZGEzNDBhYzY3MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2Fl
NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGlj
IHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1h
Z2UmIGltYWdlLCBDb21wb3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2Uu
aXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwotICAgIAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlv
biA9IG9wZXJhdGlvbjsKKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAg
ICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3Np
dGVPcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5j
eUxheWVyKG9wYWNpdHkpOwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVT
b3VyY2VPdmVyOwotICAgIH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0
QWxwaGEob3BhY2l0eSk7CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0K
IAogICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2Fs
ZSh0YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdl
LCBJbnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsK
KyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAg
ICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKQEAgLTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0
LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsK
LSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2Rl
KTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9w
ZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0
KTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChk
c3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7
CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFIKICAgICBkcmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBU
aWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+
ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVy
LT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRl
eCAyMWUxMzIzNTE4NWE0ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1
ZWIyODlhZjBiMGJhNzI5MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3
LDggKzQ3LDggQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jcm9zc2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVy
cmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIElt
YWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFk
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4
MTJiNjY0MzUxOGU1ODczNzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFh
MjI0OGY5MjBjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdS
ZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjbwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0
b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVu
ZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRl
eHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXpl
KCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXQKIH0KIAogdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAg
ICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2Vu
ZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBm
b3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXpl
KCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAo
ZGVzdENvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0
VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJu
KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5D
VE0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0
ODBhZjkzMzAzZWI2NzhkNzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZh
NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21Q
YWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9t
UGFpbnRJbWFnZS5oCkBAIC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdS
ZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsK
IAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWlu
dERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5w
dXRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dl
bmVyYXRlZEltYWdlLmgKaW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYy
MWE0MS4uMTA4Njg4Yjk3NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00
Niw5ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8q
ZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAw
OworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CmluZGV4IDVkNGVlMjgxNjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFh
ZDQ2MDQxMjg3MmQ5MjBlN2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAg
QEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25z
dCBGbG9hdFNpemUmIHNpemUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBk
ZWZhdWx0OwogCi1JbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
U2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RD
b250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Qu
c2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlYwogfQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5l
cmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZv
ciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUo
KTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29u
dGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFn
ZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVy
bihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJu
Q1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNo
ZWRJbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaApp
bmRleCAxZDlkZDkwOGJjMDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMx
NDdmOTM0ZGRlMTkzMDc0OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6
ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qg
ZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZk
M2M5ZGY5MmU5Li4zMzUxM2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKQEAgLTcxNSw1NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBp
bWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZs
b2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vs
c2UKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0j
ZW5kaWYKLSAgICAgICAgCiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNyY1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxl
ZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJh
d1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5n
LCBvcHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9p
bnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywg
ZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3
UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJ
bWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKKyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
Tm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdU
aWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhS
dWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpT
dHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8g
SnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3
SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAg
IEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRo
aXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0
eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
Y29tcG9zaXRlT3BlcmF0b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0
aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYs
MTMgKzc3MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdl
QnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZl
cihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShp
bWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRp
b24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9u
cy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWcKICAgICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSks
IGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dp
Y2FsU2l6ZSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9s
YXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2lu
dGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZN
b3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Cisg
ICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0
aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNs
aXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdk
N2UzZTM1NDc2MmU4MGI4ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2Ri
ZTI1YjRmMmRmNDkzNjg4OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3Jp
ZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUg
IlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlIHsKICNlbmRpZgogfTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25l
LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRp
b25EZWZhdWx0KQotICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0
b3IpCi0gICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2Rp
bmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9u
KQotICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkp
Ci0gICAgewotICAgIH0KLQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5
ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9y
KQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5n
TW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQot
ICAgIHsKLSAgICB9Ci0KLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJh
dG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9y
KQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5n
TW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikK
LSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQot
ICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZh
dWx0OyB9Ci0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25R
dWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250
ZXh0U3RhdGVDaGFuZ2UgewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZh
dWx0OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxh
Z3MpCkBAIC0zNDcsNyArMzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykg
fHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpO
b25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBA
IC0zOTUsMjMgKzM1OSwyMiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBv
aW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMoKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQ
YWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAg
IEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0g
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0
aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0Nv
bnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJ
bWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRl
cnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmlu
ZGV4IDk2MzY0OWY1NjlhZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYx
YWU0NmFlYTI4ODI3OWViYzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywy
NyArMzcsMjcgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQog
ewogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1w
bChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50
ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Nj
b3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkp
OwotICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9w
dGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1Rp
bGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0
IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlN
YWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdl
UGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFn
ZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNp
bmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9k
ZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRl
eHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRy
YXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywg
b3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3
VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGls
ZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0
cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJu
IGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwg
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsK
LSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2Nv
bXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0
aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
LmgKaW5kZXggYjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVl
NTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMs
OSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShD
QUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xp
bmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZj
ZjMyZGIxY2M2YjgwYTMzMTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2
NzZlYTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApA
QCAtMTM4LDMyICsxMzgsMjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBo
aWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQu
ZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3
VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2lu
dCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3Iu
aXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBj
b2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2Uo
KSB8fCBub3RTb2xpZENvbG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBG
bG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAg
RmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhh
c1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2Nh
bGVkVGlsZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0x
ODQsNyArMTgwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdo
dCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAv
IHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJl
Y3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBv
cmllbnRhdGlvbik7CisgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTE5Niw3ICsxOTIsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlz
aWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxl
LmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2Nh
bGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZp
c2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVT
cmNSZWN0LCB7IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3Qs
IGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZs
b2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1
bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0
aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAg
ICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJl
dHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVu
ZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIz
Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0
IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRp
bGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAg
ICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgp
KTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVj
dCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0
aW9ucywgQmxlbmRNb2RlOjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9
PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0
LndpZHRoKCk7CkBAIC0yNTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0o
KS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZs
b2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBk
cmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9u
ZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQ
YXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGls
ZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24o
KTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTog
TWVyZ2Ugd2l0aCB0aGUgb3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQg
YSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNj
YWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxl
UnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAog
ICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9y
LmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNv
bG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWREcmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIElt
YWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQo
KSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNl
KGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1Bh
dHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBo
YXNlLCBzcGFjaW5nLCBvcCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAg
ICBzdGFydEFuaW1hdGlvbigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7
CiB9CiAKIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNp
Y1JhdGlvKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8g
PSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0j
ZW5kaWYKICAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgp
LCBGaXhlZCk7CiAgICAgaW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhl
aWdodCgpLCBGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAppbmRleCAzNjk5N2M4MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3
MzJmN2YzOWEzOTA5OTg4YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNz
IFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5n
dGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMg
b3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9u
IGZyYW1lcy4KQEAgLTExNiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8
SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JU
IEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRh
Q2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3Rh
dHVzOjpVbmtub3duOyB9CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgog
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2
aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsx
ODYsOSBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikg
eyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBD
b21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1
cHBvcnRpbmcgdGlsZWQgZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5Mzgw
OWZiYzU2ZjE3MjRiODZkZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5
OTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2lu
Y2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENs
YW1wZWRBcnJheS5oPgpAQCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVt
IEJhY2tpbmdTdG9yZUNvcHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBz
dWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tp
bmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEs
MTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAj
ZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsg
fSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6
Tm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJp
Y0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0
NWMzZmQ2ZDMzODQxYmMwMzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgK
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
KE9wdGlvbnMuLi4gb3B0aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4u
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3Zl
cnJyaWRlcy4uLiBvdmVycnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90
aGVyKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKwor
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBv
c2l0ZU9wZXJhdG9yOyB9CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmxlbmRNb2RlOyB9CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVjb2RpbmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlv
blF1YWxpdHk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5
cGVuYW1lLi4uIFJlc3Q+CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4g
cmVzdCkKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlv
bihyZXN0Li4uKTsKKyAgICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3Bl
cmF0b3I7IH0KKyAgICB2b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxl
bmRNb2RlID0gYmxlbmRNb2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRl
Y29kaW5nTW9kZSkgeyBtX2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQg
c2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9
IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3Jp
ZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9Cisg
ICAgdm9pZCBzZXRPcHRpb24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxp
dHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisK
KyAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291
cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFs
IH07CisgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cyB9OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUgfTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRp
b25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwCmluZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWVi
M2QuLmQzZDNmYTM5ZTA2ZDg5ZWE2MmMxNzlkOTg4N2Y0NWJiZjZjOGRiZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNp
emUmCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsK
KyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsK
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTU3LDEzICs1NywxMiBAQCBJbWFnZURy
YXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRgogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURf
UEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNyY1JlY3QpOwotICAgIFVOVVNFRF9Q
QVJBTShjb21wb3NpdGVPcCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5V
U0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhp
bmc7CiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2
b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNv
bnRleHQpOwpAQCAtNzQsMTYgKzczLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAgICAg
VGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0
LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAg
ICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VC
dWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFn
ZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNFRF9QQVJB
TShzcmNSZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5V
U0VEX1BBUkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRzdFJlY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb21wb3NpdGVPcCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogI2VuZGlm
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggM2U3Yzk2ZDk0NzFmMTNmNDY5NjMxZmI2
ZWY0ZDU0ZmY4NTI1MWIxYy4uMDI4NWUxZjhiOWEyYTUxNjMyZGZjNGYzNzBhMmEwY2Q2MTNkODBl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkg
b3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggZDBmZjY3ZWZl
MWE2YzJmYjlkMmNlZGM3NTg3NWZkODgwZTZiNTczMS4uMzlkNDRiODY0NTdiYzIyMDI4ZDY3N2Ji
ZGRhNzRhMzk5MmUyYTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVJbWFnZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC02Niw3ICs2Niw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXpl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBib29sIG5hdGl2ZUltYWdlSGFzQWxwaGEoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImKTsKIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9y
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24pOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIHZvaWQg
Y2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogICAgIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggNzQ2NDBmNzA0ZWNlNDk2ZGE0MGFmNDEzYmE2ZjRk
OWJkZWFmNDE5Yi4uYTg5NWRhZGQwNDIxYjdlZDA5MTEyOGQyM2Y2NWY1ZGQ5NDRhNDcwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuY3BwCkBAIC0xNzksOCArMTc5LDcgQEAgc3RhdGljIHZvaWQgZHJhd1No
YWRvd0xheWVyQnVmZmVyKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIElt
YWdlQnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQo
bGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNp
emUpLCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsCi0gICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVm
YXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOworICAgICAgICBk
cmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qo
cm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgbGF5ZXJTaXplKSwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRv
ciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQog
CkBAIC0xOTIsOCArMTkxLDcgQEAgc3RhdGljIHZvaWQgZHJhd1NoYWRvd0ltYWdlKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIEltYWdlQnVmZmVyJgogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAg
ICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwg
U2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IHNoYWRvd1N0YXRlLmdsb2JhbENv
bXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgp
KTsKICAgICB9CiB9CiAKQEAgLTg3OCwzNyArODc2LDM3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxs
U291CiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3Vy
ZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0
YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQuc2F2ZSgpOwogCiAgICAg
Ly8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAgaWYgKGNvbXBvc2l0ZU9wZXJh
dG9yID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgYmxlbmRNb2RlID09IEJsZW5kTW9kZTo6Tm9y
bWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkKKyAgICBpZiAob3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgb3B0aW9ucy5ibGVu
ZE1vZGUoKSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCAmJiAhY2Fpcm9TdXJmYWNlSGFzQWxwaGEoc3Vy
ZmFjZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRm
b3JtQ29udGV4dCwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogICAgIGVsc2UK
LSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250
ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLmNvbXBvc2l0
ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgRmxvYXRSZWN0IGRzdCA9
IGRlc3RSZWN0OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25l
KSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpO
b25lKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRv
IGJlIGF0ICgwLCAwKS4KICAgICAgICAgQ2Fpcm86OnRyYW5zbGF0ZShwbGF0Zm9ybUNvbnRleHQs
IGRzdC54KCksIGRzdC55KCkpOwogICAgICAgICBkc3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgp
KTsKLSAgICAgICAgQ2Fpcm86OmNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0aW9u
LnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5zaXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0
aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAgQ2Fpcm86OmNvbmNhdENUTShwbGF0
Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChk
c3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRo
QXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSB3
aWxsIGhhdmUgaXRzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9y
aWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQg
Zm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAg
ICAgICAgICAgZHN0ID0gRmxvYXRSZWN0KGRzdC54KCksIGRzdC55KCksIGRzdC5oZWlnaHQoKSwg
ZHN0LndpZHRoKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgZHJhd1N1cmZhY2UocGxhdGZv
cm1Db250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd1N1cmZhY2UocGxhdGZvcm1D
b250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxp
dHkoKSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKICAgICBwbGF0Zm9ybUNvbnRleHQucmVz
dG9yZSgpOwogfQogCi12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0
Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gRklY
TUU6IEludmVzdGlnYXRlIHdoeSB0aGUgc2l6ZSBoYXMgdG8gYmUgcGFzc2VkIGluIGFzIGFuIElu
dFJlY3QuCi0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChwbGF0Zm9ybUNvbnRleHQuY3Io
KSwgc3VyZmFjZSwgc2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0b0Nh
aXJvT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSksIGRlc3RSZWN0KTsKKyAg
ICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdXJmYWNl
LCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9PcGVyYXRv
cihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpLCBkZXN0
UmVjdCk7CiB9CiAKIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggMDg1ZTYxYTVi
M2M5YzdjOTcyMTZiM2M3YmNkNmQ3NjkyNThjYzg0Zi4uNTgzNGY0MzBmMDVkZDE1ODM3MzhlMzFl
NDMzZDI3MTQwYTZjZDJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTEzOCw4ICsxMzgsOCBAQCB2
b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYpOwog
CiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxsU291cmNl
JiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBv
aW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNhaXJvX2ds
eXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgQ29sb3ImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRy
YXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3Qg
SW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9f
c3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJh
d1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJ
bnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
SW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogCiB2b2lk
IGRyYXdSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQs
IGNvbnN0IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENvbG9yJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAKaW5kZXggMjNmNjUzZWJlMzc1MjFmYzcyNWFkM2JhMTkyZTM1NDBiYWMx
OWVlZC4uZDUwMzliOTcyMTE2NGQyMWRiZDJkOGE1ZDc4ZDAzM2VkMWI1ZGZhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTIwLDE5ICsxMjAsMTkgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhp
Y2tuZXNzKQogICAgIENhaXJvOjpkcmF3UmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIGJv
cmRlclRoaWNrbmVzcywgc3RhdGUuZmlsbENvbG9yLCBzdGF0ZS5zdHJva2VTdHlsZSwgc3RhdGUu
c3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05h
dGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewot
ICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOwor
ICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NF
UlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUo
KTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBv
cmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEs
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2Uo
KnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRvIGRy
YXcgYm9yZGVycywgc28gd2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC02NjAsMTkgKzY2
MCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogICAgIENhaXJvOjpmaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZSgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3QsIHJvdW5kZWRIb2xlUmVjdCwgQ2Fp
cm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwt
PmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICAgICAg
bV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6
ZHJhd1BhdHRlcm4oKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGlt
YWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRl
cm4oKnBsYXRmb3JtQ29udGV4dCgpLCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUo
KSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMo
Ym9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAw
NGYyYTlmZjU0NjlhYTViYTI0ZDE0OTU2NTRiNjBmMGJjNDNkMmFiLi44NTJhMjc2ZjdmYzY2MTZh
OTkwNGFmZWViMGU5OTA5NzA4MDYyMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHAKQEAgLTI3NiwxNyArMjc2LDE3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvCiAg
ICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChncmFwaGlj
c0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rvciwg
aFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXpl
KTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RS
ZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwg
c3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFk
b3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNv
bnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAg
ICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgp
LCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWly
bzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEludFNpemUo
aW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKaW5kZXggZjFiMDJkMzRhYjJmZjI5YWRjZmI4NzQzYzg5
NGMxZTQ2MDhiNjczYi4uMmY1MTlkNDU0NzdkNDM3OThiNzU5YTgxNTM0NjJjOTgzNTM3Y2Q5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKQEAgLTc0LDggKzc0LDggQEAgcHVi
bGljOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRp
bGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVy
bihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGUw
MWU2MGI5ZWVlN2JhMTgzOTdhNjNlZjRhMTc2NjdmZmRjNGE0NWEuLjBmNzI2NTcwMjRlYmFjNzQw
YjBlNzhmNzMyYWM5M2ZiMGRkYjdkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC0zNDQs
MjQgKzM0NCwyMyBAQCBCYWNraW5nU3RvcmVDb3B5IEltYWdlQnVmZmVyOjpmYXN0Q29weUltYWdl
TW9kZSgpCiAgICAgcmV0dXJuIERvbnRDb3B5QmFja2luZ1N0b3JlOwogfQogCi12b2lkIEltYWdl
QnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaW1hZ2VC
dWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2Rl
KTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
ZGVzdGluYXRpb25Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsCi0gICAgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRp
b25Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsICBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBCYWNr
aW5nU3RvcmVDb3B5IGNvcHlNb2RlID0gJmRlc3RpbmF0aW9uQ29udGV4dCA9PSAmY29udGV4dCgp
ID8gQ29weUJhY2tpbmdTdG9yZSA6IERvbnRDb3B5QmFja2luZ1N0b3JlOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoY29weU1vZGUpOwotICAgIGRlc3RpbmF0aW9uQ29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSkpOworICAgIGRlc3RpbmF0aW9uQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSkKKyAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAgIGltYWdlLT5kcmF3UGF0
dGVybihjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wKTsKKyAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7
CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25z
dCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4mIGxvb2tVcFRhYmxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcAppbmRleCA4MjNmZjBjN2Q3NmM4M2VhZWQ2M2VjOThmZjE0ZjAyYTM0MGJmOWMyLi5kZTMw
NGYzNWY2NTI5Y2Q2ZmQxNThlOWEwM2M5ZjEwYzNkNWJmYzI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJv
LmNwcApAQCAtNTcsOSArNTcsOSBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRD
b2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIGNvbG9yRnJvbVBy
ZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNp
emUmIGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmll
bnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VT
dWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRl
eCA4N2M5OTA3OWJhMGZhMTQ1MzJlZjI1Mzc2YmEyNTAyNjhhYzA5NWZiLi5jZDZiYjczMGU2MTYx
OTE5M2VjZTYwYTk3ZWY4ODhkNzdlZmI2MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAt
NTM5LDcgKzUzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29u
c3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGNvbnN0IEluCiAgICAgY29udGV4dC5zY2Fs
ZShGbG9hdFNpemUoMSwgLTEpKTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtaW1hZ2VTaXpl
LmhlaWdodCgpKTsKICAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50
ZXJwb2xhdGlvbk5vbmUpOwotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNnSW1hZ2UsIGlt
YWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VTaXplKSwg
Q29tcG9zaXRlQ29weSk7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1h
Z2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCB7
IENvbXBvc2l0ZUNvcHkgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dENHLmNwcAppbmRleCBlM2ZiMzg0ZGIzMjc5NDYyOTU5OGMyOWNiYTUwNzMxNjM5MDE4OGI5Li5l
ZTI3MzhmNDIxMGM2OTJjMzViOTJhOGRlODlhZmRhMjcwYmQ4YjIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwCkBAIC0yNzMsMTMgKzI3MywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBs
YXRmb3JtU3RhdGUoKQogICAgIG1fZGF0YS0+bV91c2VyVG9EZXZpY2VUcmFuc2Zvcm1Lbm93blRv
QmVJZGVudGl0eSA9IGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBs
KSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1f
aW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjg4LDcgKzI4OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENH
SW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QKICNlbmRpZgogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBzdWJJbWFnZShpbWFnZSk7CiAKLSAgICBmbG9hdCBjdXJySGVpZ2h0ID0gb3JpZW50YXRpb24u
dXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBD
R0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKKyAgICBmbG9hdCBjdXJySGVpZ2h0ID0g
b3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lk
dGgoc3ViSW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7CiAg
ICAgaWYgKGN1cnJIZWlnaHQgPD0gc3JjUmVjdC55KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MzU4LDE1ICszNTgsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShj
b25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogICAgIGFkanVzdGVkRGVz
dFJlY3QgPSByb3VuZFRvRGV2aWNlUGl4ZWxzKGFkanVzdGVkRGVzdFJlY3QpOwogI2VuZGlmCiAK
LSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBz
ZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCks
IG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3Rz
IHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQsIGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7CiAgICAg
YWRqdXN0ZWREZXN0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAgaWYgKG9y
aWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKLSAgICAgICAgQ0dDb250ZXh0
Q29uY2F0Q1RNKGNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKSB7CisgICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcHRp
b25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5z
aXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hl
aWdodCgpKSB7CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUg
aXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlv
biBvZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdl
IGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJhY2sgaGVyZS4KICAgICAgICAgICAg
IGFkanVzdGVkRGVzdFJlY3QgPSBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVz
dGVkRGVzdFJlY3QueSgpLCBhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpLCBhZGp1c3RlZERlc3RS
ZWN0LndpZHRoKCkpOwpAQCAtNDA4LDEzICs0MDgsMTMgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJl
bGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFwYXR0ZXJuVHJhbnNmb3JtLmlzSW52ZXJ0
aWJsZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1f
aW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBtX2ltcGwtPmRy
YXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDIy
LDcgKzQyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgQ0dDb250ZXh0U3RhdGVT
YXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4
dCwgZGVzdFJlY3QpOwogCi0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJs
ZW5kTW9kZSk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjb250ZXh0LCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSArIGRlc3RSZWN0
LmhlaWdodCgpKTsKICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CkBAIC00
MzksMTEgKzQzOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAgZmxvYXQgaCA9IENH
SW1hZ2VHZXRIZWlnaHQodGlsZUltYWdlLmdldCgpKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBzdWJJbWFnZTsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemUgPSBpbWFnZS5vcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGlt
YWdlU2l6ZSA9IGltYWdlLnNpemUoKTsKLSNlbmRpZgogICAgIGlmICh0aWxlUmVjdC5zaXplKCkg
PT0gaW1hZ2VTaXplKQogICAgICAgICBzdWJJbWFnZSA9IHRpbGVJbWFnZTsKICAgICBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggZDM1ZmYwZWZmOTcxOTUwZWVkMWUzZmQwMjZiY2RhOWVhZmEzNGU0Ni4u
ODM3Yjg3NzNmNmUzOWMyNzk1NDMzNjYyNzIwOTgwNGI2M2NlZmU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAg
LTMzNCwxMSArMzM0LDExIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcjo6Y29w
eU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yCiAgICAgcmV0dXJuIGlt
YWdlOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVy
OjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIs
IEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKICAgICBp
ZiAoIWltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFjZSkgewotICAgICAgICBpbWFnZUJ1ZmZlci0+
ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAg
ICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMzUxLDEzICszNTEsMTMg
QEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGkKICAgICAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRT
cmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUocmVzb2x1dGlvblNj
YWxlKTsKLSAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIGJhY2tp
bmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOwor
ICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgYmFja2luZ1N0b3Jl
U2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiAjZWxzZQotICAgIGlt
YWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSk7CisgICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKICNlbmRpZgogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGltYWdlOwogICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8fCBk
ZXN0Q29udGV4dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKQpAQCAtMzY3LDEwICszNjcsMTAgQEAg
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsK
LSAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fZGF0YS5iYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsK
KyAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCksIG1fZGF0YS5iYWNr
aW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSk7CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
cwogICAgIGlmICghY29udGV4dCgpLmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkpIHsKICAgICAgICAg
aWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5
SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpIC8vIERyYXdpbmcgaW50byBvdXIgb3duIGJ1ZmZlciwg
bmVlZCB0byBkZWVwIGNvcHkuCi0gICAgICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVz
dENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgICAgICBjb3B5LT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2VGb3JSZW5kZXJpbmcgPSBjb3B5SW1hZ2Uo
RG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgICAgIGltYWdlRm9yUmVuZGVyaW5n
LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICAg
ICAgICAgIGltYWdlRm9yUmVuZGVyaW5nLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
dGlvbnMpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFJlZlB0cjxJbWFn
ZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgIGNvcHkt
PmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAg
ICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAppbmRleCBmMDJkNWQ1NjYwYTZjOGExMTFkNWJjODIxMGY2ZDVkOWZlYWQzYmQ4
Li44Mjk0MTE2NjFlOTg3MDYwZTAzYjNmMDNlMGU2ZGJjMWU3ZDIwNDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcApA
QCAtNjksNyArNjksNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCiAgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICog
MjU1IC8gcGl4ZWxbM10sIHBpeGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1
IC8gcGl4ZWxbM10sIHBpeGVsWzNdKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6
ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vi
c2FtcGxpbmcgbWF5IGhhdmUgZ2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4g
c2l6ZSgpLgogICAgIEludFNpemUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6
ZShpbWFnZSk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAg
aWYgKHN1YnNhbXBsZWRJbWFnZVNpemUgIT0gc3JjU2l6ZSkKICAgICAgICAgYWRqdXN0ZWRTcmNS
ZWN0ID0gbWFwUmVjdChzcmNSZWN0LCBGbG9hdFJlY3QoeyB9LCBzcmNTaXplKSwgRmxvYXRSZWN0
KHsgfSwgc3Vic2FtcGxlZEltYWdlU2l6ZSkpOwogCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3Qs
IG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1h
Z2UsIHN1YnNhbXBsZWRJbWFnZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAzZDQzY2ZiNDExMWU3YjhiZjFkZmIx
YjBlNzgzMzJmNjZhMmIxNDk2Li5hNjBmMTI1YTAxMTAzNzM2YmE3NTE3ZTM2M2FhNGE5OGQ2MjEw
OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0CiAgICAgZGVjb2RlZFNpemVDaGFuZ2VkKGludGVybmFsU2l6ZS51bmNsYW1wZWRB
cmVhKCkgKiA0KTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yNjYsNyArMjY2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKIAogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCk7CisgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAKICAgICAgICAgaWYgKG1fY2FjaGVk
SW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIC8vIERyYXcgdGhlIEltYWdlQnVmZmVyICdtX2Nh
Y2hlZEltYWdlQnVmZmVyJyB0byB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdlUmVjdCcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuaAppbmRleCA5YmYxNjdjNDU1NDIwMTYwYjhiMGY4OTczYTdkMTc5NTRmNjYxNzU1Li4y
N2Q5ZTc4MDA3OThlM2UyZDFkZGExMmVkZmQ1ZDM2MDFiZmEzOTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAgICAgRmxvYXRTaXplIHNpemUoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVu
dEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCBiNzEzZTg1ZWZjNDg2YWUx
YWUxZTBkNzMwMzYxZDlhNTRiMjhjODg3Li5kMzliNjYyYTRhYThhYjY0NmIzMzE3MDEwMmRiNmZj
OGNkODJhMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00ODcs
NyArNDg3LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdUaWxlZFNjYWxlZEltYWdlJiBpdGVtKQogfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLURyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCitEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZSkKICNpZiBVU0UoQ0cpCiAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3RvcmUg
YW4gaW1hZ2UgZm9yIENhaXJvLgpAQCAtNDk2LDIzICs0OTYsMTcgQEAgRHJhd05hdGl2ZUltYWdl
OjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGkKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRp
b24oZGVzdFJlY3QpCiAgICAgLCBtX3NyY1JlY3Qoc3JjUmVjdCkKLSNpZiBVU0UoQ0cpCi0gICAg
LCBtX29wKG9wKQotICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotI2VuZGlmCi0gICAgLCBt
X29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7CiAj
aWYgIVVTRShDRykKICAgICBVTlVTRURfUEFSQU0oaW1hZ2UpOwotICAgIFVOVVNFRF9QQVJBTShv
cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBEcmF3
TmF0aXZlSW1hZ2U6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNp
ZiBVU0UoQ0cpCi0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNp
emUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50
YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXpl
LCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0KTsKICNlbmRpZgpAQCAtNTI4LDcgKzUyMiw3IEBAIHN0YXRpYyBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2Um
IGl0ZW0pCiB9CiAjZW5kaWYKIAotRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKK0RyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd1BhdHRlcm4p
CiAgICAgLCBtX2ltYWdlKGltYWdlKQogICAgICwgbV9wYXR0ZXJuVHJhbnNmb3JtKHBhdHRlcm5U
cmFuc2Zvcm0pCkBAIC01MzYsMTQgKzUzMCwxMyBAQCBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4o
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlYwog
ICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKICAgICAsIG1fcGhhc2UocGhhc2UpCiAgICAg
LCBtX3NwYWNpbmcoc3BhY2luZykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShi
bGVuZE1vZGUpCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKIH0KIAogdm9pZCBEcmF3UGF0
dGVybjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIGNvbnRl
eHQuZHJhd1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwg
bV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3AsIG1fYmxlbmRNb2Rl
KTsKKyAgICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24s
IG1fdGlsZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29w
dGlvbnMpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRHJhd1BhdHRlcm4mIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAppbmRleCA4YmNjZTE5YjI0ZTFmZjVmNjViNmJmNDhjOTQxNzBjOWI3ZTAxZmI4Li5jZjNjZjky
OTMwYzQ2ZGJlNmM3Mjk3YTVhOTFjZTI1MTI1Y2JhNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKQEAgLTY0MSwxNiArNjQxLDE2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKSB8
fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKIGNsYXNzIERyYXdOYXRpdmVJbWFnZSA6IHB1
YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1h
Z2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKQorICAgIHN0YXRpYyBSZWY8RHJhd05hdGl2ZUltYWdlPiBj
cmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKSk7CiAgICAgfQogCiAgICAgRmxvYXRSZWN0IHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pOworICAgIERyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY2MiwxOSArNjYyLDE1IEBAIHByaXZhdGU6
CiAgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOwogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
OwogICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7Ci0jaWYgVVNFKENHKQotICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIG1fb3A7Ci0gICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOwotI2VuZGlmCi0gICAgSW1h
Z2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1f
b3B0aW9uczsKIH07CiAjZW5kaWYKIAogY2xhc3MgRHJhd1BhdHRlcm4gOiBwdWJsaWMgRHJhd2lu
Z0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4g
Y3JlYXRlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IERyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSk7CiAgICAgfQogCiAg
ICAgY29uc3QgSW1hZ2UmIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQpA
QCAtNjg1LDcgKzY4MSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3BhY2luZzsgfQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjk3LDggKzY5Myw3IEBAIHByaXZhdGU6CiAg
ICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CiAgICAgRmxvYXRQb2ludCBtX3BoYXNlOwogICAg
IEZsb2F0U2l6ZSBtX3NwYWNpbmc7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBC
bGVuZE1vZGUgbV9ibGVuZE1vZGU7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25z
OwogfTsKIAogLy8gSXMgRHJhd2luZ0l0ZW0gYmVjYXVzZSB0aGUgc2l6ZSBvZiB0aGUgdHJhbnNw
YXJlbmN5IGxheWVyIGlzIGltcGxpY2l0bHkgdGhlIGNsaXAgYm91bmRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGU3OTdhN2ZkNDI4NzE4ZDM5NzA4MDI1
NGEyZmZkNjE2MjNjYTY1NGUuLmUyMGYzZWQxM2NiNmU1NWY3ODJlOGM5YWRjMTMwODcyZGU2ZWYx
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEyNywx
NiArMTI3LDE2IEBAIEltYWdlRHJhd1Jlc3VsdCBSZWNvcmRlcjo6ZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0CiB9CiAKICNpZiBVU0UoQ0cpIHx8
IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRv
d25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGlt
YWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRh
dGlvbikpKTsKKyAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVt
PihhcHBlbmRJdGVtKERyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKGltYWdlLCBpbWFnZVNpemUsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRl
bSk7CiB9CiAjZW5kaWYKIAotdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8
RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5k
TW9kZSkpKTsKKyAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25jYXN0PERyYXdpbmdJdGVt
PihhcHBlbmRJdGVtKERyYXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKSk7CiAgICAgdXBk
YXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggMzE3OThjMWIyZDQ3NDM3NDk4ZmMzMTVhYzE2M2QzNWU0Njc1MzdmMC4u
NTE2ZDRkZjhjN2ZkOWViNWYyOTk3NTY1OGRkNzYzZDE4MDBjM2NkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05Miw5ICs5Miw5IEBAIHByaXZhdGU6CiAgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUs
IEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZv
aWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXpl
JiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICNlbmRpZgotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5k
LmNwcAppbmRleCBiZWYzYWQ5MDcxZWU4YzQ1MGQ5MWY5YmY5ODI0ODU1NTgwZTFmNDE3Li5lNGQ3
Mjk1N2IwY2RlODdmMTdmZjk3MmZjYjcxOTdjOTU5ZjMzMGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKQEAgLTcwLDcg
KzcwLDcgQEAgdm9pZCBGRUJsZW5kOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIy
LCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluMi0+YWJzb2x1dGVQYWludFJlY3QoKSkpOwot
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKTsKKyAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFn
ZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29s
dXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgeyBDb21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUgfSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9zaXRlLmNwcAppbmRleCA1MzIzYmVkYWE1NzBhNGIyMTI0MTY4YzQ2NWI0OTUxYzA0MWY0
MzlhLi5kNTZkYjQwYzA0OTRkYjE3M2YwMDE3NDRiNWMxYmM0ZDJjMWE1YTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcApAQCAtMjcwLDggKzI3MCw4IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgICAgIEludFJlY3QgYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QgPSBk
ZXN0aW5hdGlvblJlY3QgLSBhYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAg
IEludFJlY3Qgc291cmNlUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluLT5hYnNvbHV0ZVBhaW50
UmVjdCgpLmxvY2F0aW9uKCk7CiAgICAgICAgIEludFJlY3Qgc291cmNlMlJlY3QgPSBkZXN0aW5h
dGlvblJlY3QgLSBpbjItPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKLSAgICAgICAg
ZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgYWRqdXN0ZWREZXN0
aW5hdGlvblJlY3QsIHNvdXJjZTJSZWN0KTsKLSAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoKmltYWdlQnVmZmVyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlUmVj
dCwgQ29tcG9zaXRlU291cmNlSW4pOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBG
bG9hdFJlY3Qoc291cmNlMlJlY3QpKTsKKyAgICAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VC
dWZmZXIoKmltYWdlQnVmZmVyLCBGbG9hdFJlY3QoYWRqdXN0ZWREZXN0aW5hdGlvblJlY3QpLCBG
bG9hdFJlY3Qoc291cmNlUmVjdCksIHsgQ29tcG9zaXRlU291cmNlSW4gfSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIEZFQ09NUE9TSVRFX09QRVJBVE9SX09VVDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBi
MDJlMjhlZGNkNDA3ZmRmZjhjYmVhNzhhZDFhNmU3YjBjN2I1OGE5Li4wODJmMTk0NGU5NDU5NmVj
NGQ2OTEyMDZiZDQ1YjQxMjI1MTE5NTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC04ODUsMTUgKzg4NSwxMSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYQogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQo
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5n
T3B0aW9ucyhDb21wb3NpdGVDb3B5KTsKLSAgICBpZiAobV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJh
dGVkKQotICAgICAgICBwYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbiA9IG1fdmlkZW9Tb3Vy
Y2VPcmllbnRhdGlvbjsKLQogICAgIGF1dG8gZ3N0SW1hZ2UgPSBJbWFnZUdTdHJlYW1lcjo6Y3Jl
YXRlSW1hZ2UobV9zYW1wbGUuZ2V0KCkpOwogICAgIGlmICghZ3N0SW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGdzdEltYWdlLT5pbWFnZSgpLCByZWN0LCBn
c3RJbWFnZS0+cmVjdCgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGNvbnRleHQuZHJhd0ltYWdl
KGdzdEltYWdlLT5pbWFnZSgpLCByZWN0LCBnc3RJbWFnZS0+cmVjdCgpLCB7IENvbXBvc2l0ZUNv
cHksIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCA/IG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
biA6IEltYWdlT3JpZW50YXRpb24oKSB9KTsKIH0KIAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJv
L05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCmluZGV4IDUwZTBjM2M3ZDk3NjgyNmJhN2JiODE4NWQxZWUxNDIxMjlhZGEwMmMuLjFkMmFm
NjlmZDZmYTc4M2YwZmMxNjYxYTg2ODBjMmIxMDY4YzE2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCkBAIC01NDksMTQg
KzU0OSwxNCBAQCBJbWFnZURyYXdSZXN1bHQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1Rp
bGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdAogICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQ
YWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBDYWlyb09wZXJhdGlv
blJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRp
b24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxv
YXRSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4geworICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAgICAgIHZp
cnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1
dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7
Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXkocmVw
bGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJn
PDQ+KCksIGFyZzw1PigpLCBhcmc8Nj4oKSwgYXJnPDc+KCksIGFyZzw4PigpKTsKKyAgICAgICAg
ICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFy
ZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJn
PDU+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBv
dmVycmlkZQpAQCAtNTY3LDE3ICs1NjcsMTcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdAogCiAg
ICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0Nv
bnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFn
ZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVj
dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRlLmltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3Rh
dGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8
Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBh
aW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KSwg
c3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKIH0KIAotdm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQ
YXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBzdHJ1Y3QgRHJhd1BhdHRl
cm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9y
bSwgRmxvYXRQb2ludCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZT4geworICAgIHN0cnVj
dCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJl
ZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZm
aW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFnZVBhaW50aW5nT3B0aW9ucz4gewogICAgICAg
ICB2aXJ0dWFsIH5EcmF3UGF0dGVybigpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGV4ZWN1
dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAgICAgICB7
Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXll
ciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4o
KSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSk7CisgICAgICAgICAgICBDYWlybzo6ZHJh
d1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8
MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUK
QEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdAogCiAgICAgVU5VU0VE
X1BBUkFNKHNwYWNpbmcpOwogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3UGF0
dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwg
dGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb21wb3NpdGVPcGVyYXRvciwgYmxl
bmRNb2RlKSk7CisgICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZN
b3ZlKHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpKTsKIH0KIAogdm9pZCBDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRl
clRoaWNrbmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaAppbmRleCBkYmQ2NzIzMTQ4NGY5MTg3MjFjYzBiZmRkODYzODVlN2ZlNWI4
OWY5Li44MjYwYzQ4YWQ3OTg2ODRjNmU1N2MxZDY2ZGZiZTZkMDEwMWMxZjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02
Nyw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdl
YkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBX
ZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb21wb3Np
dGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlLCBXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9u
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3Jl
OjpCbGVuZE1vZGUgPSBXZWJDb3JlOjpCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5jcHAKaW5kZXggZDdhMGU5ODM5NzE4YzMxMGVhMWYyNTlhNWFmNGU0MWFlZTgyYzUx
Yy4uOWFlMmE3MmU5MGY5NWI5YWFhNDY0ODc4OGM2ZjI3YTE3N2M4ZmRlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3Bl
cmF0aW9ucy5jcHAKQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbAog
fQogCiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0
Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFs
SW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hh
ZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7
CiAgICAgYXV0byBuYXRpdmVJbWFnZVNpemUgPSBiaXRtYXBTaXplKGltYWdlKTsKICAgICBDT01Q
dHI8SUQyRDFCaXRtYXA+IGRldmljZUJpdG1hcDsKQEAgLTc3NCwxMCArNzc0LDEwIEBAIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQs
IElXSUNCaXRtYXAqIGltYWdlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VTaXpl
ID0gYml0bWFwU2l6ZShkZXZpY2VCaXRtYXAuZ2V0KCkpOwotICAgIGRyYXdOYXRpdmVJbWFnZShw
bGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwg
c3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJh
d05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNp
emUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUp
OwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGly
ZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xv
YmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJp
dG1hcFNpemUgPSBpbWFnZS0+R2V0U2l6ZSgpOwogCkBAIC04MDksMTYgKzgwOSwxNiBAQCB2b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0
LCBJRDJEMUJpdG1hcCogaW1hZwogICAgIGlmICghc2hvdWxkVXNlU3ViaW1hZ2UgJiYgY3Vyckhl
aWdodCA8IGltYWdlU2l6ZS5oZWlnaHQoKSkKICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5zZXRI
ZWlnaHQoYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSAqIGN1cnJIZWlnaHQgLyBpbWFnZVNpemUu
aGVpZ2h0KCkpOwogCi0gICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNv
bnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgIFN0YXRlOjpzZXRDb21w
b3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBl
Y3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgogICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
YWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBjb250ZXh0
LT5TZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0
aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSkgewotICAgICAgICBjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcmllbnRh
dGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwotICAg
ICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgIGlmIChvcHRp
b25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgeworICAgICAgICBj
b25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3Jt
RnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlv
bnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgZGVzdGluYXRpb24gcmVjdCB3aWxsIGhhdmUgaXQncyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVh
ZHkgcmV2ZXJzZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgogICAgICAgICAgICAgLy8gdGhlIGlt
YWdlLCBhcyBpdCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZl
cnNlIGl0IGJhY2sgaGVyZS4KICAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3QgPSBGbG9hdFJl
Y3QoYWRqdXN0ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpLCBhZGp1c3RlZERl
c3RSZWN0LmhlaWdodCgpLCBhZGp1c3RlZERlc3RSZWN0LndpZHRoKCkpOwpAQCAtODQyLDE0ICs4
NDIsMTQgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWcKICAgICAgICAgY29udGV4dC0+U2V0VHJh
bnNmb3JtKGN0bSk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0
MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogdGlsZUltYWdlLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
IHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogdGlsZUltYWdlLCBjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBh
dXRvIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQucmVuZGVyVGFyZ2V0KCk7CiAgICAgUGxhdGZv
cm1Db250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKHBsYXRmb3JtQ29udGV4dCk7CiAKICAgICBj
bGlwKHBsYXRmb3JtQ29udGV4dCwgZGVzdFJlY3QpOwogCi0gICAgU3RhdGU6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUp
OworICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgYXV0
byBiaXRtYXBCcnVzaFByb3BlcnRpZXMgPSBEMkQxOjpCaXRtYXBCcnVzaFByb3BlcnRpZXMoKTsK
ICAgICBiaXRtYXBCcnVzaFByb3BlcnRpZXMuZXh0ZW5kTW9kZVggPSBEMkQxX0VYVEVORF9NT0RF
X1dSQVA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RGlyZWN0MkRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKaW5kZXggMDZmNjU2MThlYjI5MDdjODVlMTRmNjBmY2E2
MzNiMDg4NjliMmU4YS4uYmNjZjY1NjlkODhjNTRhMTNmY2FmMDcyMmE5MGIzODgzMWI4ZDk0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJE
T3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9E
aXJlY3QyRE9wZXJhdGlvbnMuaApAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBjbGVhclJlY3Qo
UGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3
R2x5cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0
IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZvbnQmLCBkb3VibGUsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4mIGdseXBocywg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgaG9yaXpvbnRhbEFkdmFuY2VzLCBjb25zdCBWZWN0b3I8RFdS
SVRFX0dMWVBIX09GRlNFVD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHks
IGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxv
YXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSUQyRDFCaXRtYXAqLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmLCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIHZvaWQgZHJh
d1BhdGgoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tl
U291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKK3ZvaWQgZHJhd1BhdHRl
cm4oUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJV0lDQml0bWFwKiwgY29uc3QgSW50U2l6ZSYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiB2
b2lkIGRyYXdXaXRob3V0U2hhZG93KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ1JlY3QsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRl
clRhcmdldCopPiYgZHJhd0NvbW1hbmRzKTsKIHZvaWQgZHJhd1dpdGhTaGFkb3coUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgU2hh
ZG93U3RhdGUmLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoSUQyRDFSZW5kZXJUYXJnZXQqKT4m
IGRyYXdDb21tYW5kcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKaW5kZXgg
NmJiNjQ0YTJiNjVlMjM0YzE1ZmUzY2ZmZjllYjczOTE5NDRkNDFjMS4uNDQyNWZkMjZhYmU4NTQ1
MWQyYzAzMmYzNmEyNmE1N2VlMzFlMmIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXpl
JiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcAppbmRleCA0ZTRkODhkZTQ0NDFmZTNkNjU2N2M2ZThhOGYy
OGE1NWU4MzA2ODdiLi5jNjAzODUxY2Q1MzUwNjQ1NmVjYjdmMGM5MmEwNDM4MDkyYzgxYTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgQ29sb3IgbmF0aXZl
SW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQog
ICAgIHJldHVybiBDb2xvcigpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRp
dmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBz
cmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKIHsKICAgICBhdXRv
IHBsYXRmb3JtQ29udGV4dCA9IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCmluZGV4IDE0N2MyZDBiNWIzZmU5
ODExMGIwZmMzYWM4MWY2YmJkNzZmYThhZGQuLjUwMjc5OTBjZTU1ZTQ2MWIyZGQ4MmI5YzMyOWU5
ZDlhMzJmODBlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFn
SW1hZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlP
Uy5tbQpAQCAtOTYsNyArOTYsNyBAQCBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUlt
YWdlKEltYWdlKiBpbWFnZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbgogICAgICAgICBH
cmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNvbnRleHQuQ0dDb250ZXh0KTsKICAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXplLmhlaWdodCk7CiAgICAgICAgIGNvbnRl
eHQuc2NhbGUoeyBhZGp1c3RlZEltYWdlU2NhbGUsIC1hZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0g
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcmllbnRhdGlvbikpOworICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1h
Z2UsIEZsb2F0UG9pbnQoKSwgeyBvcmllbnRhdGlvbiB9KTsKICAgICB9XTsKICAgICByZXR1cm4g
aW1hZ2VDb3B5LkNHSW1hZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA5MDFjNDExMGUxYzU2YmE2MGE0ZGQzYmE3Yjkz
ZmFhZjYwNDFjYjMzLi43NDgyY2UwMjBjOTQxMGY1NmViMDYwNGYzYzUzYmY5YjFiZDI2Yzg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgICAg
ICAgICBhdXRvIGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250
ZXh0LCAqaW1hZ2UsICZiZ0xheWVyLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsKICAgICAgICAgICAg
IGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFp
bnRJbmZvKTsKLSAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVk
SW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5
LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6
ZSgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUo
KSwgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBpbnRlcnBvbGF0aW9uKSk7
CisgICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZEltYWdlKCpp
bWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5yZWxhdGl2
ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUoKSwgeyBj
b21wb3NpdGVPcCwgYmdMYXllci5ibGVuZE1vZGUoKSwgZGVjb2RpbmdNb2RlLCBpbnRlcnBvbGF0
aW9uIH0pOwogICAgICAgICAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpE
aWRSZXF1ZXN0RGVjb2RpbmcpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYmdJbWFnZS0+aXND
YWNoZWRJbWFnZSgpKTsKICAgICAgICAgICAgICAgICBiZ0ltYWdlLT5jYWNoZWRJbWFnZSgpLT5h
ZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCA5MTNiYjQxM2I5
NDJmMWUwNjI2Y2Y1OGMxNDVhYjMyNmI3MWNjMjk2Li43YWMwNGI4YmE0ZjQxNTEzYjNmY2JhZjE5
MzFiY2Y0NDgwNWM5NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpwYWludFNuYXBzaG90SW1hZ2UoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dAogICAgICAgICByZXR1cm47CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRl
cnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4dCwgaW1hZ2UsICZp
bWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwg
YWxpZ25lZFJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50
ZXJwb2xhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBhbGlnbmVkUmVjdCwg
eyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIHZvaWQgUmVuZGVy
RW1iZWRkZWRPYmplY3Q6OnBhaW50Q29udGVudHMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCmluZGV4IGY1MWUyZmViMzdlMWZjZjBmZDBlNzkxYWU2NGYwM2VlODhhMmE3Yzgu
LjM5MzVjYjQ1YTE0ZTZkNzY4NzlhNWQ3MThlNTBhNDA1ZjM5NDhhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgUmVu
ZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mCiAgICAgICAgICAgICAgICAgICAgIGNlbnRlclkgPSAwOwogICAgICAg
ICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0U2l6ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCAr
IGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCwgdG9wQm9yZGVyICsgdG9wUGFkICsg
Y2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoKTsKIAotICAgICAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0
KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9y
KSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCAr
IGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3RvciksIHsgaW1hZ2VPcmll
bnRhdGlvbigpIH0pOwogICAgICAgICAgICAgICAgIGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KIApAQCAtNjMyLDcgKzYzMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5k
ZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRS
ZWN0CiAgICAgICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2UpLnVwZGF0ZUZyb21TZXR0
aW5ncyhzZXR0aW5ncygpKTsKIAogICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2Rl
Rm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICBhdXRvIGRyYXdSZXN1bHQgPSBw
YWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwg
aW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgYXV0byBkcmF3UmVzdWx0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgeyBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgaW1hZ2VPcmllbnRhdGlv
bigpLCBpbnRlcnBvbGF0aW9uIH0pOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jl
c3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVk
SW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cAppbmRleCAwZGZlMjgyNzY0ZjQwOGI2MjBiZWY1ZDlmNThlODhhNmNjNzZjMDg0Li40ZmU4NTg2
MjVjOTI5ZDgwYmVjYWZlYTY2ZjA2NGUzNDIxODEyNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKQEAgLTE0NSw3ICsx
NDUsNyBAQCB2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwYWludFNuYXBzaG90KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQbwogICAgICAgICByZXR1cm47CiAKICAgICBJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1
YWxpdHkoY29udGV4dCwgKmltYWdlLCBpbWFnZSwgYWxpZ25lZFJlY3Quc2l6ZSgpKTsKLSAgICBj
b250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJ
bWFnZSgqaW1hZ2UsIGFsaWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xh
dGlvbiB9KTsKIH0KIAogQ3Vyc29yRGlyZWN0aXZlIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpn
ZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBDdXJzb3ImIG92ZXJyaWRlQ3Vyc29y
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4
IDQ0Y2IyMDAxYzBiZThhYjQyNzc2ZjU1NzU2ZTE0NDAzNzVjMDE3YmEuLmE0MmNlNmVjMmQ2OTM5
YzAwMTYxZjE3OWJlMjY0NGUxMjQyOTI0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KQEAgLTIyNzgsNyArMjI3OCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsCiAgICAgaWYgKGFsaWduZWRQbHVnaW5SZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVk
UGx1Z2luUmVjdC5oZWlnaHQoKSA8PSAwKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdpblJlY3QsIENvbXBvc2l0ZVNv
dXJjZU92ZXIpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKCpzbmFwc2hvdCwgYWxpZ25lZFBsdWdp
blJlY3QpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAKaW5kZXggNWM1NmI2OTk5NWJjOTJmNGNhODgxZTJiOTFlOWYzN2ZmNWMz
OGY1Mi4uMDBhYmMwZDEyNzNiMGZlY2UwMTM3N2VlOWI5OGNhYzdkNWY4NmVkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgSW50
U2l6ZSBTVkdJbWFnZTo6Y29udGFpbmVyU2l6ZSgpIGNvbnN0CiB9CiAKIEltYWdlRHJhd1Jlc3Vs
dCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBV
UkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTIwMiw3ICsyMDIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdAogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJh
Z21lbnQoaW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQg
PSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVk
U3JjLCBvcHRpb25zKTsKIAogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0yMjEsNyArMjIxLDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNvbnN0IEdyYXBoaWNzQ29udGV4dCopCiAgICAg
aWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgZHJhdyhidWZmZXItPmNvbnRl
eHQoKSwgcmVjdCgpLCByZWN0KCkpOwogCiAgICAgLy8gRklYTUU6IFdLKEJ1ZyAxMTM2NTcpOiBX
ZSBzaG91bGQgdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlIGhlcmUuCiAgICAgcmV0dXJuIGJ1ZmZl
ci0+Y29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSgpOwpAQCAtMjQ3LDE0ICsyNDcsMTQgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKICAgICBQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCBwbGF0Zm9ybUNvbnRleHQobmF0aXZlSW1hZ2VUYXJnZXQuZ2V0KCkp
OwogICAgIEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoJnBsYXRmb3JtQ29udGV4dCwgR3Jh
cGhpY3NDb250ZXh0OjpCaXRtYXBSZW5kZXJpbmdDb250ZXh0VHlwZTo6R1BVTWVtb3J5KTsKIAot
ICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSk7
CiAKICAgICByZXR1cm4gbmF0aXZlSW1hZ2U7CiB9CiAjZW5kaWYKIAogdm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYg
aW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qg
em9vbWVkQ29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNp
emUpOwogICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoY29udGFpbmVyWm9vbSk7CkBAIC0y
NzEsNyArMjcxLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgQ29sb3JTcGFj
ZVNSR0IsIGNvbnRleHQpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUg
YnVmZmVyLgogICAgICAgICByZXR1cm47Ci0gICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNv
bnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJM
LCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QsIENvbXBvc2l0ZVNvdXJjZU92
ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29u
dGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkws
IGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CiAgICAgaWYgKGNvbnRleHQu
ZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7CiAKQEAgLTI4NiwxMCArMjg2LDEwIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAg
ICAgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLnNjYWxlKDEgLyBpbWFnZUJ1ZmZlclNjYWxlLndp
ZHRoKCksIDEgLyBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAogICAgIGNvbnRleHQuc2V0
RHJhd0x1bWluYW5jZU1hc2soZmFsc2UpOwotICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0
LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZS0+ZHJhd1BhdHRl
cm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KQorSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjk4LDExICsy
OTgsMTEgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWMKICAgICBBU1NFUlQodmlldyk7CiAKICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
LCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZW5jbG9zaW5nSW50UmVj
dChkc3RSZWN0KSk7CiAKICAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKLSAgICBi
b29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9
IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8
IGFscGhhIDwgMTsKKyAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXll
ciA9IG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8
IG9wdGlvbnMuYmxlbmRNb2RlKCkgIT0gQmxlbmRNb2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOwog
ICAgIGlmIChjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKICAgICAgICAgY29udGV4dC5z
ZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3Jt
YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCAwNzU0MjRmYzc1
ZGJkZTA5OTE3MGZmM2Y2ZWJhNmU2YzcxZmQyZTE1Li42MTQ1ODUzNDAzYjQ3N2FlYzcxMWM4ZGQ2
MmY4ODM2NTQ5OWUwMmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApA
QCAtOTQsMTAgKzk0LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uVGltZXJG
aXJlZCgpOwogCiAgICAgZXhwbGljaXQgU1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYpOwotICAgIElt
YWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJv
bVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6
ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxG
cmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWlu
ZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVS
TCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLAotICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiwgQmxlbmRNb2RlKTsKKyAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21S
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJa
b29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgUmVmUHRyPFNWR1NWR0VsZW1lbnQ+IHJvb3RFbGVt
ZW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCmluZGV4IGNmOGNjM2U1Y2VjOGU4MTJkZTY5YTlmNDRhZGJi
N2IwNWM1NWMwMDUuLmQ3MGE2NDBjNmEwNDkxZTdlMTY3Zjk0YzE4MGUyNzkxYTMxZWFjOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmNwcApAQCAtMzQsMTYgKzM0LDE1IEBAIEZsb2F0U2l6ZSBTVkdJbWFnZUZvckNvbnRhaW5l
cjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShyb3VuZGVkSW50U2l6ZShzY2Fs
ZWRDb250YWluZXJTaXplKSk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZvckNvbnRh
aW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJT
aXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNS
ZWN0LCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0Zv
ckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9p
bml0aWFsRnJhZ21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lk
IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoY29u
dGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50
VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRl
T3AsIGRzdFJlY3QsIGJsZW5kTW9kZSk7CisgICAgbV9pbWFnZS0+ZHJhd1BhdHRlcm5Gb3JDb250
YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlh
bEZyYWdtZW50VVJMLCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
ZHN0UmVjdCwgb3B0aW9ucyk7CiB9CiAKIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRh
cmdldENvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZUZvckNvbnRhaW5lci5oCmluZGV4IDg2OWQwOTcxYzViMmZlNWQ0OTUxZGQ2MDM0MGFlMzYzY2Y3
NzZmMDQuLjU3YjIwNGQ5ODNmYjA3YjFhN2VkNjFhMWFmZWI0ZWI3ZjhhYTBkNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBA
IC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNp
Y0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0
aW8pOwogICAgIH0KIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsK
IAotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZp
bmFsOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgZmluYWw7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBj
b25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA1NTJlZjFhOGZlMmQ1NTU2NDNhZTk1
YzU0NWE2MDVjZjc1YTdiMzVjLi5kMWZlZmM2ZTgzZDYxMzEzYjFiY2MxYzNhMTdlNDYzMWEwNjQ4
OWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMjYxOCw3ICsyNjE4LDcgQEAgc3RhdGljIHZvaWQgaW1hZ2VQb3NpdGlv
bkluZm9ybWF0aW9uKFdlYlBhZ2UmIHBhZ2UsIEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEludGUK
ICAgICBpZiAoIWdyYXBoaWNzQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53
aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlv
bigpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UmVjdCgw
LCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCB7IHJlbmRlcklt
YWdlLmltYWdlT3JpZW50YXRpb24oKSB9KTsKICAgICBpbmZvLmltYWdlID0gc2hhcmVkQml0bWFw
OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377131</attachid>
            <date>2019-08-23 09:52:09 -0700</date>
            <delta_ts>2019-08-23 14:10:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823095209.patch</filename>
            <type>text/plain</type>
            <size>169769</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uNjcxZTdlYjg2MTY5NWQwZGJmMmRmYzE1NmVlZGJj
MTNlN2MxNDcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOC0yMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ltYWdlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0
ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OnVzZXNEZWZhdWx0
SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1Rp
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmlnaW5hbFNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRp
b25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Oklt
YWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRp
b25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0aW9uUXVhbGl0eSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6c2V0T3B0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
aXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRp
dmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUlt
YWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd1BhdHRlcm46OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJh
dGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoTmljb3NpYTo6Q2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpn
ZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJh
bWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklU
TUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJ
bWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdOYXRpdmVJbWFnZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6
OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpw
YWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwogMjAxOS0wOC0yMiAgQW5keSBFc3Rl
cyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1NdIERpc2FibGUgQ29udGVu
dCBGaWx0ZXJpbmcgaW4gdGhlIHNpbXVsYXRvciBidWlsZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlZGUzNTFkMmY3
Nzg3YTBkOWMxMGViY2JkNjZjM2Q1MGFmNzA1NzYwLi5mNWJjOGJjOTI3MTVjNzljMmI2ZWVlNmYw
ODFlOGM5ODRhZGE3ZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
IGltYWdlIGRyYXdpbmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUg
SW1hZ2VQYWludGluZ09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIElt
YWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24p
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMzg1MmQzZDM5MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFj
ZjY5ZWIwMTc4MzA0MTVmM2I0NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcg
QEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJB
MjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9w
ZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2
OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIElt
YWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5N
YXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVE
MzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVF
NTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyog
QWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQx
Nyw2ICs5NDE4LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRz
UkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhU
c1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2
MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhU
c1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAw
MTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NDU1Myw2ICsyNDU1NSw3IEBACiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9u
LmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRp
b25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5n
TW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5j
cHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8s
CkBAIC0yOTU2OSw2ICsyOTU3Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8q
IEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQw
ODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVE
MDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgz
RjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0
N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9JbWFnZUJpdG1hcC5jcHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2
YzZkOWIwOTA1My4uNmIwYzdhM2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRy
PEhUTUxJbWFnZUVsZW1lbnQKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQ
b2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09w
dGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsK
LQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBk
ZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09w
dGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVu
ZGVyLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
IH0pOwogCiAgICAgLy8gNy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBh
dXRvIGltYWdlQml0bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEw
ICszNzAsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVj
dCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25z
LnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRt
YXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBE
YXRhKSk7CkBAIC00ODQsMTAgKzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21p
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAg
YXV0byBpbWFnZUZvclJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5
SW1hZ2UoKTsKIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNp
emUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWlu
dGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0
YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VS
ZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0
bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBz
b3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAz
LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAg
PSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQg
SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRl
c3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlv
bnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRp
bmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwg
ZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsK
IAogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRj
Y2M1NmMwMjhhMy4uOWViOTQ3ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBk
b2N1bWVudCwgQ2EKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRl
RnJvbVNldHRpbmdzKGRvY3VtZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWlu
c0NhbnZhcyhub3JtYWxpemVkRHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFn
ZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0
aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1h
bGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXND
b21wb3NpdGVNb2RlKG9wKSkgewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFn
ZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3Np
dGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgq
aW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBu
b3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1h
Z2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJs
ZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQog
ICAgIApAQCAtMTYzMiw3ICsxNjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRp
ZgogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09w
dGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAg
ICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3Rh
dGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRp
ZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0
ZU1vZGUoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21w
b3NpdGVkRHJhd0ltYWdlKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFs
Q29tcG9zaXRlKTsKQEAgLTE2NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBz
b3UKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBD
b2xvclNwYWNlU1JHQiwgKmMpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAg
ICAgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBz
cmNSZWN0LnNpemUoKSB9LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAg
ICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
KSk7CisgICAgICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgfQogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIElt
YWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwx
NyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3
SW1hZ2UoSW1hZ2VCaXRtYXAmIGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1h
cCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNl
IGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RS
ZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0
UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQg
KzE4MjksMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVC
dWZmZXIoSW1hZ2VCdWZmZXImIGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyYywgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRl
eHQoSW1hZ2UmIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9w
KTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0K
IAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZl
ciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJ
bWFnZVRvQ29udGV4dChJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0
ZTxjbGFzcyBUPiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXND
b21wb3NpdGVkRHJhd0ltYWdlKFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3
IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC10cmFuc2Zvcm1lZEFkanVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNv
bnRleHQoKS50cmFuc2xhdGUoY3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCku
Y29uY2F0Q1RNKGVmZmVjdGl2ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGlt
YWdlLCBidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOworICAgIGRyYXdJbWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCks
IGFkanVzdGVkRGVzdCwgc3JjLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21w
b3NpdGVCdWZmZXIoKmJ1ZmZlciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYx
NGNkYWU1ZDg5ZWVhMTdiNDJjNDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4
YTBlMWFmOGIxNWYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBC
aXRtYXBJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJl
dHVybiBtX3NvdXJjZS0+ZGF0YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQot
ICAgIAorCiB2b2lkIEJpdG1hcEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lm
TmVjZXNzYXJ5KERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4g
bmV3IGRhdGEgaXMgcmVjZWl2ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0
IHRvIERlY29kaW5nU3RhdHVzOjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6bm90U29saWRDb2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJp
dG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChkZXN0UmVjdC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6
OiVzIC0gJXAgLSB1cmw6ICVzIFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JE
cmF3aW5nID0gKCUuNGYsICUuNGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1w
bGluZ0xldmVsKSwgc2NhbGVGYWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9y
RHJhd2luZy5oZWlnaHQoKSk7CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAo
ZGVjb2RpbmdNb2RlID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9w
dGlvbnMuZGVjb2RpbmdNb2RlKCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAg
ICAgICAgQVNTRVJUKCFjYW5BbmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZy
YW1lIHx8IG1fYW5pbWF0aW9uRmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VE
cmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXMKIAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUlt
YWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50
U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9u
b3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAg
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xv
cjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmls
bFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5j
b2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1h
Z2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0
YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAh
bV9yZXBldGl0aW9uc0NvbXBsZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdElu
ZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAg
ICAgaWYgKHN0YXR1cyA9PSBTdGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYg
bV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVj
dCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAg
ICAgICAgfSBlbHNlIGlmIChmcmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogaW5zdGVhZCBvZiBzaG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5p
bmcgd2UgbmVlZCB0byB3YWl0IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAg
ICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlk
Q29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFs
cGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAg
TE9HKEltYWdlcywgIkJpdG1hcEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3Ig
YXN5bmMgZGVjb2RpbmcgdG8gZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJM
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2
NCwxNSBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAg
Q29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNW
YWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwg
Y29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4
KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZy
YW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAg
ICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIElu
dFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmll
bnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2Rp
bmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIGlmIChtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5n
U3RhdHVzOjpJbnZhbGlkKQogICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRl
RGVjb2RlZERhdGEoKTsKICAgICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgICAgICBJbWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJy
ZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3Vy
cmVudEZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdl
IG9ic2VydmVyLCB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNh
bGxzIGR1ZSB0byB0aGlzIHJlbGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxw
dHIpOwogCi0gICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVj
dCwgb3AsIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0
aWxlUmVjdCwgeyBvcHRpb25zLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lIH0pOwogCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwog
ICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRN
b2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJp
dG1hcEltYWdlOjpzaG91bGRBbmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1
YWFiYzg4YjY4ZjFmMDRhZDUuLjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
aApAQCAtMTYxLDggKzE2MSw4IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxv
bmcuCiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lB
bGwgPSB0cnVlKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXpl
JiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVy
YXRlZEltYWdlLmNwcAppbmRleCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3
MzNmLi5kNGJkYjVmMjBhYTRhZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCkBAIC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3Nz
ZmFkZVN1YmltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21w
b3MKICAgICBib29sIHVzZVRyYW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAg
IAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsK
KworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKICAgICAgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkp
OwotICAgICAgICBkcmF3SW1hZ2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAg
IH0gZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7
CisgICAgICAgIG9wdGlvbnMgPSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJn
ZXRTaXplICE9IGltYWdlU2l6ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8g
aW1hZ2VTaXplKTsKIAotICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgSW50UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAg
LTg2LDEwICs4NywxMCBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3Nm
YWRlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5j
eUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlv
bnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0
LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAh
PSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbAogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jv
c3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCkBAIC0xMTEsNyArMTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBk
cmF3Q3Jvc3NmYWRlKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBi
dWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29u
dGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4
dFN0cmVhbSYgdHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0
ZTg1MmY0ZDAyZGY0Y2QxZjQ2OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5
MDA2Y2I4YjdlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9z
c2ZhZGVTaXplOyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBm
bG9hdCBwZXJjZW50YWdlLCBjb25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9DdXN0b21QYWludEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODcz
NzhkMDNlYTc5ZDMuLjJmYjZmYTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50
SW1hZ2UuY3BwCkBAIC0xNzAsMTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwog
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3Vs
dCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRl
c3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9z
aXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAg
ZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRl
c3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5z
aXplKCkpCkBAIC0xODMsNyArMTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAog
dm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3Zp
ZGUgdmlzdWFsbHktZXF1aXZhbGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZv
cm1hbmNlLgogICAgIEZsb2F0U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJh
d0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNr
KCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxz
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1
c3RvbVBhaW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3Rv
bVBhaW50SW1hZ2UuaAppbmRleCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2Nzhk
NzFlLi5lNzcwNzliODgyOTZlZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBA
IC01Miw4ICs1Miw4IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwor
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
ICAgICBXZWFrUHRyPFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1f
cGFpbnREZWZpbml0aW9uOwogICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgK
aW5kZXggM2E4NTljMzFhYzRmMDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3
NTY1N2RhNDdiMTc0ZmY1NzM0OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0g
dHJ1ZSkgb3ZlcnJpZGUgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2Rl
LCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIG92ZXJyaWRlID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0
byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgx
NjZiYjQ4OGE3OWRjYTI5NGZhYWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBl
N2UxZTAxMTY3NjZjYTYzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFn
ZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNp
emUpCiAKIEdyYWRpZW50SW1hZ2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFn
ZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZl
cihkZXN0Q29udGV4dCk7Ci0gICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNv
bXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGRlc3RDb250ZXh0LmNsaXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0
ZShkZXN0UmVjdC5sb2NhdGlvbigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1Jl
Y3Quc2l6ZSgpKQpAQCAtNTMsNyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQog
CiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlk
ZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9y
bWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVt
aW5hbmNlTWFzayhmYWxzZSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0
aGUgY29udGV4dC4KLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3Bh
Y2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1Bh
dHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0
dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJj
MDc2MWU1NTI0ZDFhNDc4ZWE2YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0
OGRhNzBjM2ZiMTc1YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Q29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5h
bDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcAppbmRleCA3YWY5ZWFlMDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUx
M2RmNGY4MzdmYTY4NmQzZDRiYWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1
NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAg
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdl
UGFpbnRpbmdPcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBh
aW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgb3B0aW9ucyk7CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9w
ZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9kZWNvZGluZ01vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24p
OworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAg
ICByZXR1cm4gaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291
cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7
CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFp
bnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNv
dXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRp
bGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2NhbGVGYWN0b3IsCi0gICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUg
dlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
KyAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAg
IGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdl
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFn
ZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1
bGUsIG9wdGlvbnMpOwogCiAgICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2
UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxl
LgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0
aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZl
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGlu
YXRpb24sIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6
ZSgpKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9u
UXVhbGl0eSk7Ci0gICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9ibGVuZE1vZGUpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRl
cnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9u
UXVhbGl0eSgpKTsKKyAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBv
cHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQpAQCAtODAxLDEzICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAg
ICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFs
aXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBv
bGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUo
KnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6
OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNl
LCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4
ZjI3YTk1MjYyMzIyNzliNWY5MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4
OTNlNDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNp
bmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTIxMCw0MyArMjExLDYgQEAgc3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgog
fTsKIAotc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdN
b2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlv
bkRlZmF1bHQsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0K
LSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246Ok5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAg
ICAgOiBtX2NvbXBvc2l0ZU9wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1f
YmxlbmRNb2RlKGJsZW5kTW9kZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01v
ZGUpCi0gICAgICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2lu
dGVycG9sYXRpb25RdWFsaXR5KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0g
ICAgCi0gICAgYm9vbCB1c2VzRGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2ludGVycG9sYXRpb25RdWFsaXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBD
b21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKLSAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7Ci19OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Ug
ewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyAr
MzExLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJE
KSB8fCBVU0UoQ0FJUk8pCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
Y29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3Jt
YWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwy
MiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMo
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2
b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9p
ZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1Njlh
ZTM0NzcwMWQ1MWRhZGRmNDA3ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWVi
YzkwODYxM2UyY2NlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFn
ZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpk
cmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xh
dGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRp
b24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQm
IHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29u
dGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
LUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1
bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9
PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAg
ICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwo
Y29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0
aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5
TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rv
ciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9y
KTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsK
KyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5
NGVlMjQ2MDFmZTRlMDcxNDdhYTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1
NTQ0NTQ1ZTllNmExYzljODg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNv
bnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpID0gMDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJ
UkVDVDJEKQotICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3Jk
ZXJUaGlja25lc3MpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5jcHAKaW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMz
MTgyYWRjNC4uZWVlNGNmZTIzNmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgs
MjggQEAgdm9pZCBJbWFnZTo6ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRo
aXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3
KCp0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3ND
b250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3Ig
PSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
RHJhdzsKICAgICB9CiAKICAgICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENv
bG9yKCkpOwogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmlu
c2ljVGlsZVNpemUgPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJp
bnNpY1RpbGVTaXplID0gc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgo
KSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lk
dGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVz
dFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAg
dmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkp
OwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBz
Y2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7Cisg
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9u
cyk7CiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBv
cCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlv
bnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCku
aGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0
aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxl
U3JjUmVjdDsKQEAgLTIwNCw3ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAg
ICAgIHZpc2libGVTcmNSZWN0LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBk
ZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQs
IGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxv
YXRQb2ludChjdXJyZW50VGlsZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9u
KCkpLCBjdXJyZW50VGlsZVJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5z
Y2FsZSgxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9k
ZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2Rl
OjpOb3JtYWwgfSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0y
NTAsMTcgKzI0NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZv
cm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVj
dChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0
aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24o
KSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUg
b3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBv
ZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxl
UnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9y
ID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewot
ICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAg
ICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRE
cmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0CiAgICAgICAgIHZQaGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVI
ZWlnaHQpIC8gMjsKIAogICAgIEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0g
aFBoYXNlLCBkc3RSZWN0LnkoKSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBv
cCk7CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlv
bigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1h
Z2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUo
KTsKLSNlbHNlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRy
aW5zaWNXaWR0aCA9IExlbmd0aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAg
aW50cmluc2ljSGVpZ2h0ID0gTGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4
MzUyMWM0NmM1Y2Q0NzU1NmQ4MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4
YWI0YWVlMmI1N2FhOTVlZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsK
K3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMg
Y2xhc3MgZ2V0cyBub3RpZmllZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVj
b2RlZCBmcmFtZXMgYW5kIHdoZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTEx
NiwxMCArMTE3LDYgQEAgcHVibGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS5oZWlnaHQoKTsgfQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNw
b3QoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgdmlydHVhbCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1
cm4gc2l6ZSgpOyB9Ci0jZW5kaWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3Rh
dHVzIHNldERhdGEoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8q
YWxsRGF0YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9
CiAKQEAgLTE3Myw4ICsxNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdl
dEdka1BpeGJ1ZigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLAotICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90
U29saWRDb2xvcigpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0
ZWQ6CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGlu
Z1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2Fs
ZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
cik7CisgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7Cisg
ICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQg
ZHJhd2luZwogICAgIHZpcnR1YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZk
ZmI2Yi4uN2YwYzAxOTJjZmFlNDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMzRC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFp
bnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpA
QCAtNTEsNyArNTIsNyBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNv
cHkgewogICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdz
IGRvbid0IGFmZmVjdCB0aGUgY29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJz
ZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAg
ICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBv
c2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0
aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBz
dGF0aWMgdm9pZCBkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pOwogCiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWlu
YW5jZU1hc2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMw
MzU1NWYwN2M5MDJjOTFkNTExY2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBPcHRpb25zPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0
aW9ucykKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVy
cnJpZGVzKQorICAgICAgICA6IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAg
ICAgICAgc2V0T3B0aW9uKG92ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKCkgPSBkZWZhdWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
Y29tcG9zaXRlT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9
CisgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9
CisgICAgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rp
bmdNb2RlOyB9CisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKwor
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+
CisgICAgdm9pZCBzZXRPcHRpb24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7Cisg
ICAgICAgIHNldE9wdGlvbihmaXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAg
ICB9CisKKyAgICB2b2lkIHNldE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvcikgeyBtX2NvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2
b2lkIHNldE9wdGlvbihCbGVuZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRN
b2RlOyB9CisgICAgdm9pZCBzZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBt
X2RlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVP
cGVyYXRvciBtX2NvbXBvc2l0ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAg
IEJsZW5kTW9kZSBtX2JsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2Rp
bmdNb2RlIG1fZGVjb2RpbmdNb2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAg
IEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUg
fTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50
ZXJwb2xhdGlvbkRlZmF1bHQgfTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDlhNmIwMThkNDJmYTc0NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLmQzZDNmYTM5ZTA2
ZDg5ZWE2MmMxNzlkOTg4N2Y0NWJiZjZjOGRiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNDAsMTEgKzQwLDExIEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29u
dGFpbmVyU2l6ZShzaXplKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0
ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICNpZiBVU0UoTkVXX1RIRU1FKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBz
cmNSZWN0LnNpemUoKSkKQEAgLTU3LDEzICs1NywxMiBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RgogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7
CiAgICAgVU5VU0VEX1BBUkFNKHNyY1JlY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb21wb3NpdGVP
cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlv
bnMpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAjZW5kaWYKIH0K
IAotdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQpOwpAQCAtNzQs
MTYgKzczLDE1IEBAIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAgICAgVGhlbWU6OnNpbmdsZXRv
bigpLmRyYXdOYW1lZEltYWdlKG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwg
MCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUg
aW1hZ2UgYnVmZmVyIGludG8gdGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0
ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhd1Bh
dHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIG9wdGlvbnMpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwogICAgIFVOVVNFRF9QQVJBTShzcmNSZWN0KTsKICAg
ICBVTlVTRURfUEFSQU0ocGF0dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BBUkFNKHBoYXNl
KTsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFJlY3Qp
OwotICAgIFVOVVNFRF9QQVJBTShjb21wb3NpdGVPcCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5k
TW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmgKaW5kZXggM2U3Yzk2ZDk0NzFmMTNmNDY5NjMxZmI2ZWY0ZDU0ZmY4NTI1MWIx
Yy4uMDI4NWUxZjhiOWEyYTUxNjMyZGZjNGYzNzBhMmEwY2Q2MTNkODBlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0
cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKaW5kZXggZDBmZjY3ZWZlMWE2YzJmYjlkMmNlZGM3
NTg3NWZkODgwZTZiNTczMS4uZTA5NjU2ZWFmMzFiY2U2OTgxY2VkNWQzNDZmYTliMTc4OTU2NWZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5o
CkBAIC0yNyw4ICsyNyw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiR3JhcGhpY3NU
eXBlcy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBh
aW50aW5nT3B0aW9ucy5oIgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTY2LDcgKzY1LDcgQEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKIGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0
ciYpOwogQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZl
SW1hZ2VQdHImKTsKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBJbnRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbik7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElu
dFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVhck5hdGl2ZUlt
YWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcAppbmRleCA3NDY0MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRlYWY0MTliLi5h
ODk1ZGFkZDA0MjFiN2VkMDkxMTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAKQEAgLTE3OSw4ICsxNzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZm
ZXIoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4
dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiks
IGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0
YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZSwKLSAgICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0LCBzaGFkb3dT
dGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFn
ZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9p
bnQobGF5ZXJPcmlnaW4pLCBsYXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXll
clNpemUpLCB7IHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0
YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTE5Miw4ICsx
OTEsNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewot
ICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAgICAgICAgSW50
ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgp
KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0
b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0K
IApAQCAtODc4LDM3ICs4NzYsMzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UKICAgICBjYWly
b19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0
YXRlKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0
YXRlKQogewogICAgIHBsYXRmb3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBTZXQgdGhlIGNv
bXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3IgPT0gQ29tcG9z
aXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwgJiYgIWNhaXJv
U3VyZmFjZUhhc0FscGhhKHN1cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBvc2l0ZU9wZXJh
dG9yKCkgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9kZSgpID09IEJs
ZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkKICAgICAg
ICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBD
b21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAgICAgICBDYWly
bzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVzdFJlY3Q7Ci0g
ICAgaWYgKG9yaWVudGF0aW9uICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICBpZiAo
b3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAg
ICAgLy8gSW1hZ2VPcmllbnRhdGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDAp
LgogICAgICAgICBDYWlybzo6dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0LngoKSwgZHN0
LnkoKSk7CiAgICAgICAgIGRzdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAgICBD
YWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJv
bURlZmF1bHQoZHN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRo
QXNIZWlnaHQoKSkgeworICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwg
b3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5zaXplKCkpKTsK
KyAgICAgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdHMg
d2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YK
ICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlv
dXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBkc3Qg
PSBGbG9hdFJlY3QoZHN0LngoKSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qud2lkdGgoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UsIGRzdCwgc3JjUmVjdCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxw
aGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZh
Y2UsIGRzdCwgc3JjUmVjdCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpLCBnbG9iYWxB
bHBoYSwgc2hhZG93U3RhdGUpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3JlKCk7CiB9CiAK
LXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3Zv
aWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTogSW52ZXN0aWdh
dGUgd2h5IHRoZSBzaXplIGhhcyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVjdC4KLSAgICBk
cmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdXJmYWNlLCBz
aXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9PcGVyYXRvcihj
b21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJu
VG9DYWlyb0NvbnRleHQocGxhdGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNpemUsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wdGlvbnMuY29t
cG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0KTsKIH0KIAog
dm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
YWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgb3JpZ2luYWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzljN2M5NzIxNmIz
YzdiY2Q2ZDc2OTI1OGNjODRmLi41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNkMjcxNDBhNmNk
MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9D
YWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQgY2xlYXJSZWN0
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0ds
eXBocyhQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJv
a2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19z
Y2FsZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9h
dCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBD
b2xvciYpOwogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNh
aXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25R
dWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBk
cmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0dGVybihQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJm
YWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9u
UXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJhd1JlY3QoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3Im
LCBTdHJva2VTdHlsZSwgY29uc3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAppbmRleCAyM2Y2NTNlYmUzNzUyMWZjNzI1YWQzYmExOTJlMzU0MGJhYzE5ZWVkLi5kNTAzOWI5
NzIxMTY0ZDIxZGJkMmQ4YTVkNzhkMDMzZWQxYjVkZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAg
Q2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNz
LCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1w
bC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBj
b21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1faW1w
bC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJv
OjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBz
dGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRv
d1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5p
bWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3Rh
dGUoc3RhdGUpKTsKIH0KIAogLy8gVGhpcyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3JkZXJzLCBz
byB3ZSBzaG91bGQgbm90IGRyYXcgc2hhZG93cy4KQEAgLTY2MCwxOSArNjYwLDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0CiAgICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpw
bGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJj
ZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUg
YmxlbmRNb2RlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4o
aW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpOworICAgICAgICBtX2ltcGwtPmRyYXdQ
YXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigq
cGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1D
b250ZXh0KCksIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3Qs
IHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFh
NWJhMjRkMTQ5NTY1NGI2MGYwYmM0M2QyYWIuLjg1MmEyNzZmN2ZjNjYxNmE5OTA0YWZlZWIwZTk5
MDk3MDgwNjIzM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAt
Mjc2LDE3ICsyNzYsMTcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWly
bzo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8m
IHN0YXRlID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CisgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkgfSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBpbWFnZS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6
ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1h
Z2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
Y29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVy
bihtX3BsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkp
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaAppbmRleCBmMWIwMmQzNGFiMmZmMjlhZGNmYjg3NDNjODk0YzFlNDYwOGI2NzNi
Li4yZjUxOWQ0NTQ3N2Q0Mzc5OGI3NTlhODE1MzQ2MmM5ODM1MzdjZDllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXggZTAxZTYwYjllZWU3YmEx
ODM5N2E2M2VmNGExNzY2N2ZmZGM0YTQ1YS4uMGY3MjY1NzAyNGViYWM3NDBiMGU3OGY3MzJhYzkz
ZmIwZGRiN2QxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTM0NCwyNCArMzQ0LDIzIEBA
IEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKICAgICBy
ZXR1cm4gRG9udENvcHlCYWNraW5nU3RvcmU7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhk
ZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGltYWdl
QnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwKLSAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEJhY2tpbmdTdG9yZUNvcHkg
Y29weU1vZGUgPSAmZGVzdGluYXRpb25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2lu
Z1N0b3JlIDogRG9udENvcHlCYWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9
IGNvcHlJbWFnZShjb3B5TW9kZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgq
aW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRN
b2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSk7
CisgICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNS
ZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwK
LSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewogICAgIGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKERv
bnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQs
IGRlc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3Ap
OworICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJ
bWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8
dWludDhfdCwgMjU2PiYgbG9va1VwVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDgy
M2ZmMGM3ZDc2YzgzZWFlZDYzZWM5OGZmMTRmMDJhMzQwYmY5YzIuLmRlMzA0ZjM1ZjY1MjljZDZm
ZDE1OGU5YTAzYzlmMTBjM2Q1YmZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC01Nyw5
ICs1Nyw5IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFS
R0IoKnBpeGVsKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXpl
LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25z
dCBOYXRpdmVJbWFnZVB0ciYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg3Yzk5MDc5YmEw
ZmExNDUzMmVmMjUzNzZiYTI1MDI2OGFjMDk1ZmIuLmNkNmJiNzMwZTYxNjE5MTkzZWNlNjBhOTdl
Zjg4OGQ3N2VmYjYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MzksNyArNTM5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBj
aGFyKiBpbWFnZVBpeGVscywgY29uc3QgSW4KICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgx
LCAtMSkpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1pbWFnZVNpemUuaGVpZ2h0KCkpOwog
ICAgIGNvbnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9u
ZSk7Ci0gICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52
YXNSZWN0LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5
KTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZh
c1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlQ29w
eSB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4
IGUzZmIzODRkYjMyNzk0NjI5NTk4YzI5Y2JhNTA3MzE2MzkwMTg4YjkuLmVlMjczOGY0MjEwYzY5
MmMzNWI5MmE4ZGU4OWFmZGEyNzBiZDhiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI3Mywx
MyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgp
CiAgICAgbV9kYXRhLT5tX3VzZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0g
ZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
UmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24g
b3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAg
bV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0
aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGlt
YWdlLCBjb25zdAogI2VuZGlmCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlKGlt
YWdlKTsKIAotICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hl
aWdodCgpID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWln
aHQoc3ViSW1hZ2UuZ2V0KCkpOworICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcHRpb25zLm9yaWVu
dGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5n
ZXQoKSkgOiBDR0ltYWdlR2V0SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKICAgICBpZiAoY3Vyckhl
aWdodCA8PSBzcmNSZWN0LnkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTgsMTUgKzM1OCwx
NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0
cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IHJvdW5k
VG9EZXZpY2VQaXhlbHMoYWRqdXN0ZWREZXN0UmVjdCk7CiAjZW5kaWYKIAotICAgIHNldFBsYXRm
b3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgIHNldFBsYXRmb3JtQ29t
cG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVu
ZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0
byBiZSBhdCAoMCwgMCkKICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0
ZWREZXN0UmVjdC54KCksIGFkanVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBhZGp1c3RlZERlc3RS
ZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0g
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgewotICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29u
dGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5z
aXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKKyAgICAgICAgQ0dDb250ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRp
b24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAg
ICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAg
ICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFu
ZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAg
ICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3
ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0
UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55
KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7
CkBAIC00MDgsMTMgKzQwOCwxMyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNr
KHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkgfHwgIXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3UGF0
dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1h
Z2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MjIsNyArNDIyLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2
ZXIoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBkZXN0UmVjdCk7
CiAKLSAgICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAg
ICBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNv
bnRleHQsIGRlc3RSZWN0LngoKSwgZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwog
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIDEsIC0xKTsKQEAgLTQzOSwxMSArNDM5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QKICAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdo
dCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdl
OwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGlt
YWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1h
Z2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUp
CiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRl
eCBkMzVmZjBlZmY5NzE5NTBlZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2Li44MzdiODc3M2Y2ZTM5
YzI3OTU0MzM2NjI3MjA5ODA0YjYzY2VmZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzM0LDExICszMzQs
MTEgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1p
bmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250
ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNp
ZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmICghaW1hZ2VCdWZm
ZXItPm1fZGF0YS5zdXJmYWNlKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGltYWdlQnVm
ZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTEsMTMgKzM1MSwxMyBAQCB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIsIEdyYXBoaQogICAgIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNS
ZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwotICAgIGRl
c3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgYmFja2luZ1N0b3JlU2l6ZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVj
dCwgYWRqdXN0ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNlCi0gICAgaW1hZ2VCdWZmZXItPmRy
YXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBp
bWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMp
OwogI2VuZGlmCiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
SW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1h
Z2U7CiAgICAgaWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0Lmlz
QWNjZWxlcmF0ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2NywxMCBAQCB2b2lkIEltYWdlQnVm
ZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAg
ICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250
ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCi12b2lkIEltYWdlQnVm
ZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRl
c3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9
IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsK
QEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgaWYgKCFj
b250ZXh0KCkuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoJmRlc3RDb250
ZXh0ID09ICZjb250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkg
ewogICAgICAgICAgICAgaWYgKFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFj
a2luZ1N0b3JlKSkgLy8gRHJhd2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAg
Y29weS4KLSAgICAgICAgICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcs
IG9wLCBibGVuZE1vZGUpOworICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RD
b250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAo
UmVmUHRyPEltYWdlPiBpbWFnZUZvclJlbmRlcmluZyA9IGNvcHlJbWFnZShEb250Q29weUJhY2tp
bmdTdG9yZSkpCi0gICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJu
KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICAgICAgaW1hZ2VG
b3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29w
eUltYWdlKENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4o
ZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGNvcHktPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmlu
ZGV4IGYwMmQ1ZDU2NjBhNmM4YTExMWQ1YmM4MjEwZjZkNWQ5ZmVhZDNiZDguLjgyOTQxMTY2MWU5
ODcwNjBlMDNiM2YwM2UwZTZkYmMxZTdkMjA0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFsz
XSwgcGl4ZWxbMV0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwg
cGl4ZWxbM10pOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkg
aGF2ZSBnaXZlbiB1cyBhbiBpbWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCiAgICAg
SW50U2l6ZSBzdWJzYW1wbGVkSW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBpZiAoc3Vic2FtcGxl
ZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0
KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1w
bGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vi
c2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIG1vZGUsIG9y
aWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxl
ZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZv
aWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmluZGV4IDNkNDNjZmI0MTExZTdiOGJmMWRmYjFiMGU3ODMzMmY2NmEy
YjE0OTYuLmE2MGYxMjVhMDExMDM3MzZiYTc1MTdlMzYzYWE0YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRh
dGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAg
ICBkZWNvZGVkU2l6ZUNoYW5nZWQoaW50ZXJuYWxTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQpOwog
fQogCi1JbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI2Niw3ICsyNjYsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdAogCiAgICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKG9wKTsKKyAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikg
ewogICAgICAgICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZm
ZXInIHRvIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmluZGV4
IDliZjE2N2M0NTU0MjAxNjBiOGIwZjg5NzNhN2QxNzk1NGY2NjE3NTUuLjI3ZDllNzgwMDc5OGUz
ZTJkMWRkYTEyZWRmZDVkMzYwMWJmYTM5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKQEAgLTc4LDcgKzc4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYg
aW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJp
bnNpY1JhdGlvKSBvdmVycmlkZTsKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGI3MTNlODVlZmM0ODZhZTFhZTFlMGQ3MzAzNjFk
OWE1NGIyOGM4ODcuLmQzOWI2NjJhNGFhOGFiNjQ2YjMzMTcwMTAyZGI2ZmM4Y2Q4MmExNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBz
dGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1Rp
bGVkU2NhbGVkSW1hZ2UmIGl0ZW0pCiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwg
VVNFKERJUkVDVDJEKQotRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK0RyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiAgICAgOiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
KQogI2lmIFVTRShDRykKICAgICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3Ig
Q2Fpcm8uCkBAIC00OTYsMjMgKzQ5NiwxNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogICAg
ICwgbV9pbWFnZVNpemUoaW1hZ2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkK
ICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQotI2lmIFVTRShDRykKLSAgICAsIG1fb3Aob3ApCi0g
ICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0jZW5kaWYKLSAgICAsIG1fb3JpZW50YXRpb24o
b3JpZW50YXRpb24pCisgICAgLCBtX29wdGlvbnMob3B0aW9ucykKIHsKICNpZiAhVVNFKENHKQog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICBVTlVT
RURfUEFSQU0oYmxlbmRNb2RlKTsKICNlbmRpZgogfQogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6
YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKLSAg
ICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5h
dGlvbiwgbV9zcmNSZWN0LCBtX29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CisgICAg
Y29udGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRp
b24sIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRl
eHQpOwogI2VuZGlmCkBAIC01MjgsNyArNTIyLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKIH0KICNl
bmRpZgogCi1EcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlKQorRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKICAgICAsIG1faW1h
Z2UoaW1hZ2UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSkKQEAg
LTUzNiwxNCArNTMwLDEzIEBAIERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjCiAgICAgLCBtX2Rlc3Rp
bmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9waGFzZShwaGFzZSkKICAgICAsIG1fc3BhY2luZyhz
cGFjaW5nKQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKKyAg
ICAsIG1fb3B0aW9ucyhvcHRpb25zKQogewogfQogCiB2b2lkIERyYXdQYXR0ZXJuOjphcHBseShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3UGF0dGVy
bihtX2ltYWdlLmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFu
c2Zvcm0sIG1fcGhhc2UsIG1fc3BhY2luZywgbV9vcCwgbV9ibGVuZE1vZGUpOworICAgIGNvbnRl
eHQuZHJhd1BhdHRlcm4obV9pbWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwg
bV9wYXR0ZXJuVHJhbnNmb3JtLCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3B0aW9ucyk7CiB9CiAK
IHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3
UGF0dGVybiYgaXRlbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDhiY2Nl
MTliMjRlMWZmNWY2NWI2YmY0OGM5NDE3MGM5YjdlMDFmYjguLmNmM2NmOTI5MzBjNDZkYmU2Yzcy
OTdhNWE5MWNlMjUxMjVjYmE3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApA
QCAtNjQxLDE2ICs2NDEsMTYgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykg
fHwgVVNFKERJUkVDVDJEKQogY2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJ
dGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24pCisgICAgc3RhdGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBO
YXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbjsgfQogCiBwcml2YXRlOgotICAgIERyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7CisgICAgRHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOwogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKIApAQCAtNjYyLDE5ICs2NjIsMTUgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNp
emUgbV9pbWFnZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CiAgICAgRmxvYXRS
ZWN0IG1fc3JjUmVjdDsKLSNpZiBVU0UoQ0cpCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsK
LSAgICBCbGVuZE1vZGUgbV9ibGVuZE1vZGU7Ci0jZW5kaWYKLSAgICBJbWFnZU9yaWVudGF0aW9u
IG1fb3JpZW50YXRpb247CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsK
ICNlbmRpZgogCiBjbGFzcyBEcmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBpbWFnZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRN
b2RlIGJsZW5kTW9kZSkKKyAgICBzdGF0aWMgUmVmPERyYXdQYXR0ZXJuPiBjcmVhdGUoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBjb25zdCBJbWFn
ZSYgaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CkBAIC02ODUsNyArNjgx
LDcgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBzcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
cGFjaW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7Cisg
ICAgRHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwogCkBAIC02OTcsOCArNjkzLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3Qg
bV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFBvaW50IG1fcGhhc2U7CiAgICAgRmxvYXRTaXplIG1f
c3BhY2luZzsKLSAgICBDb21wb3NpdGVPcGVyYXRvciBtX29wOwotICAgIEJsZW5kTW9kZSBtX2Js
ZW5kTW9kZTsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCiAvLyBJ
cyBEcmF3aW5nSXRlbSBiZWNhdXNlIHRoZSBzaXplIG9mIHRoZSB0cmFuc3BhcmVuY3kgbGF5ZXIg
aXMgaW1wbGljaXRseSB0aGUgY2xpcCBib3VuZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKaW5kZXggZTc5N2E3ZmQ0Mjg3MThkMzk3MDgwMjU0YTJmZmQ2MTYyM2Nh
NjU0ZS4uZTIwZjNlZDEzY2I2ZTU1Zjc4MmU4YzlhZGMxMzA4NzJkZTZlZjEzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTI3LDE2ICsxMjcsMTYgQEAg
SW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXQKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8
fCBVU0UoRElSRUNUMkQpCi12b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2lu
Z0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOworICAg
IERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0o
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wdGlvbnMpKSk7CiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KICNlbmRp
ZgogCi12b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVu
ZE1vZGUpCit2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4o
YXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSkpOworICAg
IERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0o
RHJhd1BhdHRlcm46OmNyZWF0ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50
KG5ld0l0ZW0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRl
eCAzMTc5OGMxYjJkNDc0Mzc0OThmYzMxNWFjMTYzZDM1ZTQ2NzUzN2YwLi41MTZkNGRmOGM3ZmQ5
ZWI1ZjI5OTc1NjU4ZGQ3NjNkMTgwMGMzY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmgKQEAgLTkyLDkgKzkyLDkgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1
bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVS
dWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogI2VuZGlm
Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGJl
ZjNhZDkwNzFlZThjNDUwZDkxZjliZjk4MjQ4NTU1ODBlMWY0MTcuLmU0ZDcyOTU3YjBjZGU4N2Yx
N2ZmOTcyZmNiNzE5N2M5NTlmMzMwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lk
IEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIG1fbW9kZSkpOworICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFn
ZUJ1ZmZlciwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3Qo
KSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCB7IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSB9KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3Bw
CmluZGV4IDUzMjNiZWRhYTU3MGE0YjIxMjQxNjhjNDY1YjQ5NTFjMDQxZjQzOWEuLmQ1NmRiNDBj
MDQ5NGRiMTczZjAwMTc0NGI1YzFiYzRkMmMxYTVhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0y
NzAsOCArMjcwLDggQEAgdm9pZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICAgICAgSW50UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVj
dCAtIGFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3Vy
Y2VSZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRp
b24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGlu
Mi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwg
c291cmNlMlJlY3QpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1h
Z2VCdWZmZXIsIGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVT
b3VyY2VJbik7CisgICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlcjIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3Vy
Y2UyUmVjdCkpOworICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIEZsb2F0UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3Vy
Y2VSZWN0KSwgeyBDb21wb3NpdGVTb3VyY2VJbiB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgRkVDT01QT1NJVEVfT1BFUkFUT1JfT1VUOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGIwMmUyOGVkY2Q0MDdm
ZGZmOGNiZWE3OGFkMWE2ZTdiMGM3YjU4YTkuLjA4MmYxOTQ0ZTk0NTk2ZWM0ZDY5MTIwNmJkNDVi
NDEyMjUxMTk1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZS5jcHAKQEAgLTg4NSwxNSArODg1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hCiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBv
c2l0ZUNvcHkpOwotICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQpCi0gICAgICAg
IHBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9u
OwotCiAgICAgYXV0byBnc3RJbWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3Nh
bXBsZS5nZXQoKSk7CiAgICAgaWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0
KCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmlt
YWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHsgQ29tcG9zaXRlQ29weSwgbV9yZW5kZXJp
bmdDYW5CZUFjY2VsZXJhdGVkID8gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uIDogSW1hZ2VPcmll
bnRhdGlvbigpIH0pOwogfQogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJv
T3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggNTBl
MGMzYzdkOTc2ODI2YmE3YmI4MTg1ZDFlZTE0MjEyOWFkYTAyYy4uMWQyYWY2OWZkNmZhNzgzZjBm
YzE2NjFhODY4MGMyYjEwNjhjMTZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU0OSwxNCArNTQ5LDE0IEBAIElt
YWdlRHJhd1Jlc3VsdCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRy
YXdUaWxlZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0
cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9u
RGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25R
dWFsaXR5LCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CisgICAgc3RydWN0IERyYXdOYXRp
dmVJbWFnZSBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+LCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMsIGZsb2F0LCBDYWlybzo6U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05h
dGl2ZUltYWdlKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09w
ZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzww
PigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+
KCksIGFyZzw2PigpLCBhcmc8Nz4oKSwgYXJnPDg+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCks
IGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01
NjcsMTcgKzU2NywxNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAKICAgICBVTlVTRURfUEFS
QU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRl
KCk7Ci0gICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVP
cGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBh
cHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNl
X3Q+KGltYWdlLmdldCgpKSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJ
bnRTaXplLCBGbG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlPiB7CisgICAgc3RydWN0IERyYXdQYXR0ZXJu
IGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CiAgICAgICAgIHZpcnR1YWwgfkRy
YXdQYXR0ZXJuKCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09w
ZXJhdGlvblJlcGxheSYgcmVwbGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IENhaXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCku
Z2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwg
YXJnPDY+KCksIGFyZzw3PigpKTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihjb250
ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4o
KSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwgYXJnPDY+KCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTg4LDcgKzU4
OCw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2lu
Zyk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3Zl
KHN1cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpKTsKKyAg
ICAgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSks
IEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CmluZGV4IGRiZDY3MjMxNDg0ZjkxODcyMWNjMGJmZGQ4NjM4NWU3ZmU1Yjg5ZjkuLjgyNjBjNDhh
ZDc5ODY4NGM2ZTU3YzFkNjZkZmJlNmQwMTAxYzFmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDggKzY3LDggQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6
OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2Um
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3Jl
OjpJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdl
OjpUaWxlUnVsZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBX
ZWJDb3JlOjpCbGVuZE1vZGUsIFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSA9
IFdlYkNvcmU6OkJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcApp
bmRleCBkN2EwZTk4Mzk3MThjMzEwZWExZjI1OWE1YWY0ZTQxYWVlODJjNTFjLi45YWUyYTcyZTkw
Zjk1YjlhYWE0NjQ4Nzg4YzZmMjdhMTc3YzhmZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcApA
QCAtNzY1LDcgKzc2NSw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsCiB9CiAKIAotdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwg
SVdJQ0JpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hh
ZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYg
cGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmln
aW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xv
YmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIG5h
dGl2ZUltYWdlU2l6ZSA9IGJpdG1hcFNpemUoaW1hZ2UpOwogICAgIENPTVB0cjxJRDJEMUJpdG1h
cD4gZGV2aWNlQml0bWFwOwpAQCAtNzc0LDEwICs3NzQsMTAgQEAgdm9pZCBkcmF3TmF0aXZlSW1h
Z2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCog
aW1hZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBiaXRtYXBTaXpl
KGRldmljZUJpdG1hcC5nZXQoKSk7Ci0gICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4
dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21w
b3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgaW1hZ2VJbnRlcnBvbGF0aW9u
UXVhbGl0eSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3TmF0aXZlSW1hZ2Uo
cGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMsIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQs
IElEMkQxQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3Rh
dGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZv
cm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gYml0bWFwU2l6ZSA9IGlt
YWdlLT5HZXRTaXplKCk7CiAKQEAgLTgwOSwxNiArODA5LDE2IEBAIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFw
KiBpbWFnCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VT
aXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1c3Rl
ZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAK
LSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9z
aXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlv
bihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5i
bGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdp
biB0byBiZSBhdCAoMCwgMCkuCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShhZGp1c3RlZERlc3RS
ZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGNvbnRleHQtPlNldFRyYW5zZm9y
bSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2lu
dCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7
Ci0gICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9y
bUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChvcmll
bnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRp
b24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CisgICAgICAgIGNvbmNhdENUTShwbGF0
Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChh
ZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
bigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlv
biByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBm
b3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdh
cyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBo
ZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERl
c3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0
KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC04NDIsMTQgKzg0MiwxNCBAQCB2b2lk
IGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0
LCBJRDJEMUJpdG1hcCogaW1hZwogICAgICAgICBjb250ZXh0LT5TZXRUcmFuc2Zvcm0oY3RtKTsK
IH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1D
b250ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250
ZXh0LCBJV0lDQml0bWFwKiB0aWxlSW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gY29udGV4dCA9
IHBsYXRmb3JtQ29udGV4dC5yZW5kZXJUYXJnZXQoKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIocGxhdGZvcm1Db250ZXh0KTsKIAogICAgIGNsaXAocGxhdGZvcm1D
b250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBs
YXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6
OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRl
T3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICBhdXRvIGJpdG1hcEJydXNo
UHJvcGVydGllcyA9IEQyRDE6OkJpdG1hcEJydXNoUHJvcGVydGllcygpOwogICAgIGJpdG1hcEJy
dXNoUHJvcGVydGllcy5leHRlbmRNb2RlWCA9IEQyRDFfRVhURU5EX01PREVfV1JBUDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJh
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9w
ZXJhdGlvbnMuaAppbmRleCAwNmY2NTYxOGViMjkwN2M4NWUxNGY2MGZjYTYzM2IwODg2OWIyZThh
Li5iY2NmNjU2OWQ4OGM1NGExM2ZjYWYwNzIyYTkwYjM4ODMxYjhkOTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0
aW9ucy5oCkBAIC0xMjcsMTAgKzEyNywxMCBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRl
eHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZv
cm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNl
JiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRm9udCYsIGRv
dWJsZSwgY29uc3QgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiYgZ2x5cGhzLCBjb25zdCBWZWN0b3I8
ZmxvYXQ+JiBob3Jpem9udGFsQWR2YW5jZXMsIGNvbnN0IFZlY3RvcjxEV1JJVEVfR0xZUEhfT0ZG
U0VUPiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0
IFNoYWRvd1N0YXRlJik7Ci12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJl
Y3QyRCYsIElEMkQxQml0bWFwKiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hh
ZG93U3RhdGUmKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJE
JiwgSVdJQ0JpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0
LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250
ZXh0RGlyZWN0MkQmLCBJRDJEMUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0aChQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYsIElXSUNCaXRtYXAqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKIHZvaWQgZHJhd1dpdGhv
dXRTaGFkb3coUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nUmVjdCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBk
cmF3Q29tbWFuZHMpOwogdm9pZCBkcmF3V2l0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3Qy
RCYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA2YmI2NDRhMmI2NWUy
MzRjMTVmZTNjZmZmOWViNzM5MTk0NGQ0MWMxLi40NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2
YTU3ZWUzMWUyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03
MSw4ICs3MSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGls
ZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAg
IHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFs
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0
ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDE0
MTE5ZWJmNWEyOWFmNjhjZDU2ZDlmYjA3MzlkNjljOTY2NTQyMjIuLjkzMjNkYTcyNDhmNmY0OTk4
MWU0NTkzODM2ODMyODc5ZGQxZGUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBC
aXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSog
c2l6ZSkKICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXpl
KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVp
Z2h0KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCks
IEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgICAgICBkcmF3KGdjLCBGbG9h
dFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkp
LCB7IENvbXBvc2l0ZUNvcHkgfSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0
UmVsZWFzZShjZ0NvbnRleHQpOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdAogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1h
Z2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAg
ICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9j
dXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsg
Y29tcG9zaXRlT3AgfSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFt
ZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZv
aWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBz
aXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAg
IEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoY3R4
dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDYWlyb1dpbi5jcHAKaW5kZXggMjRlYzViYzFkOGMyYmI5MjhmYTA1ODU2ZTMzMzQyMmFj
NmY1YzhiMi4uNjhiZjM5N2RlZmIxOGVkMDc3OGU4M2Y2NDJjZDlmMmE1ZGY2ZGIzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJv
V2luLmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZT
aXplKEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIGlmIChzaXplKQogICAg
ICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBm
LCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29w
eSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1w
SW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlv
bjo6Tm9uZSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIAog
ICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAs
NyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXpl
KEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKICAgICAgICAgaWYgKGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1
cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewog
ICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAg
ICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgp
KSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0
UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWln
aHQoKSksIHsgY29tcG9zaXRlT3AgfSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1
cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUg
Y29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBm
cmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAg
IGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWws
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAg
IGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggNGU0ZDg4ZGU0NDQx
ZmUzZDY1NjdjNmU4YThmMjhhNTVlODMwNjg3Yi4uYzYwMzg1MWNkNTM1MDY0NTZlY2I3ZjBjOTJh
MDQzODA5MmM4MWE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtMTAyLDcgKzEwMiw3
IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiBpbWFnZSkKICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpCiB7CiAgICAgYXV0byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdl
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQppbmRl
eCAxNDdjMmQwYjViM2ZlOTgxMTBiMGZjM2FjODFmNmJiZDc2ZmE4YWRkLi41MDI3OTkwY2U1NWU0
NjFiMmRkODJiOWMzMjllOWQ5YTMyZjgwZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9EcmFnSW1hZ2VJT1MubW0KQEAgLTk2LDcgKzk2LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24KICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNH
Q29udGV4dCk7CiAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQp
OwogICAgICAgICBjb250ZXh0LnNjYWxlKHsgYWRqdXN0ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJ
bWFnZVNjYWxlIH0pOwotICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9p
bnQoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMob3JpZW50YXRpb24pKTsKKyAgICAgICAgY29udGV4
dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCksIHsgb3JpZW50YXRpb24gfSk7CiAgICAg
fV07CiAgICAgcmV0dXJuIGltYWdlQ29weS5DR0ltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggOTAxYzQxMTBlMWM1
NmJhNjBhNGRkM2JhN2I5M2ZhYWY2MDQxY2IzMy4uNzQ4MmNlMDIwYzk0MTBmNTZlYjA2MDRmM2M1
M2JmOWIxYmQyNmM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY28KIAogICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xh
dGlvblF1YWxpdHkoY29udGV4dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUo
KSk7CiAgICAgICAgICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdl
RHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBj
b250ZXh0LmRyYXdUaWxlZEltYWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlv
dXRQb2ludChnZW9tZXRyeS5yZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBn
ZW9tZXRyeS5zcGFjZVNpemUoKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJn
TGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwg
aW50ZXJwb2xhdGlvbikpOworICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5k
cmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQo
Z2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnku
c3BhY2VTaXplKCksIHsgY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5n
TW9kZSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09IElt
YWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGJnSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
aW5kZXggOTEzYmI0MTNiOTQyZjFlMDYyNmNmNThjMTQ1YWIzMjZiNzFjYzI5Ni4uN2FjMDRiOGJh
NGY0MTUxM2IzZmNiYWYxOTMxYmNmNDQ4MDVjOTQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAg
dm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNv
bnRleHQsIGltYWdlLCAmaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5k
cmF3SW1hZ2UoaW1hZ2UsIGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9y
aWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFn
ZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uIH0pOwog
fQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBmNTFlMmZlYjM3ZTFmY2YwZmQwZTc5MWFl
NjRmMDNlZTg4YTJhN2M4Li4zOTM1Y2I0NWExNGU2ZDc2ODc5YTVkNzE4ZTUwYTQwNWYzOTQ4YTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ2OSw3ICs0
NjksNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgICAgICBjZW50
ZXJZID0gMDsKICAgICAgICAgICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJv
cmRlciArIGxlZnRQYWQgKyBjZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJv
cmRlciArIHRvcFBhZCArIGNlbnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBk
ZXZpY2VTY2FsZUZhY3RvciksIGltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJl
Y3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0
b3IpLCB7IGltYWdlT3JpZW50YXRpb24oKSB9KTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1
cmVEcmF3biA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTYzMiw3ICs2MzIsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdl
KS51cGRhdGVGcm9tU2V0dGluZ3Moc2V0dGluZ3MoKSk7CiAKICAgICBhdXRvIGRlY29kaW5nTW9k
ZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0
byBkcmF3UmVzdWx0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFs
LCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAg
IGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJl
Y3QsIHsgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUs
IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICBpZiAoZHJhd1Jlc3Vs
dCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgaW1hZ2VS
ZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5n
KCp0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHAKaW5kZXggMGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZj
Yzc2YzA4NC4uNGZlODU4NjI1YzkyOWQ4MGJlY2FmZWE2NmYwNjRlMzQyMTgxMjVjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4u
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFp
bnRTbmFwc2hvdChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAg
cmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29z
ZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0
LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1h
Z2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7Cisg
ICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0
aW9uKCksIGludGVycG9sYXRpb24gfSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbjo6Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29y
JiBvdmVycmlkZUN1cnNvcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQppbmRleCA0NGNiMjAwMWMwYmU4YWI0Mjc3NmY1NTc1NmUxNDQwMzc1YzAxN2Jh
Li5hNDJjZTZlYzJkNjkzOWMwMDE2MWYxNzliZTI2NDRlMTI0MjkyNDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBi
b29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgp
IDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5S
ZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNo
b3QsIGFsaWduZWRQbHVnaW5SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IDVjNTZiNjk5OTViYzkyZjRjYTg4
MWUyYjkxZTlmMzdmZjVjMzhmNTIuLjAwYWJjMGQxMjczYjBmZWNlMDEzNzdlZTliOThjYWM3ZDVm
ODZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUoKSBjb25zdAogfQog
CiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFp
bmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBA
IC0yMDIsNyArMjAyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXQKIAogICAgIGZyYW1lVmll
dygpLT5zY3JvbGxUb0ZyYWdtZW50KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURy
YXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb246Ok5vbmUpOworICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQs
IGRzdFJlY3QsIHNjYWxlZFNyYywgb3B0aW9ucyk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9i
c2VydmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUlt
YWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGlj
c0NvbnRleHQqKQogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBy
ZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpKTsKIAogICAgIC8vIEZJWE1FOiBX
SyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgog
ICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0NywxNCArMjQ3LDE0IEBAIE5hdGl2ZUltYWdlUHRy
IFNWR0ltYWdlOjpuYXRpdmVJbWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRl
eHQpCiAgICAgUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUlt
YWdlVGFyZ2V0LmdldCgpKTsKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0
Zm9ybUNvbnRleHQsIEdyYXBoaWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6
OkdQVU1lbW9yeSk7CiAKLSAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGxvY2FsQ29udGV4dCwg
cmVjdCgpLCByZWN0KCkpOwogCiAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOwogfQogI2VuZGlmCiAK
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJa
b29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LAotICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgRmxvYXRSZWN0IHpvb21lZENvbnRhaW5lclJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBjb250YWluZXJTaXplKTsKICAgICB6b29tZWRDb250YWluZXJSZWN0LnNjYWxlKGNvbnRh
aW5lclpvb20pOwpAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUo
KSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFp
bGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250
YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGlu
aXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRh
aW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5p
dGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwog
ICAgIGlmIChjb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29u
dmVydFRvTHVtaW5hbmNlTWFzaygpOwogCkBAIC0yODYsMTAgKzI4NiwxMCBAQCB2b2lkIFNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZQogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1h
Z2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAK
ICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJh
d1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAg
aW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2Nh
bGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCi1JbWFn
ZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGlu
ZzsKQEAgLTI5OCwxMSArMjk4LDExIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgQVNT
RVJUKHZpZXcpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29t
cG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgY29udGV4dC5jbGlw
KGVuY2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwogCiAgICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0
LmFscGhhKCk7Ci0gICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIg
PSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVu
ZE1vZGU6Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CisgICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVz
VHJhbnNwYXJlbmN5TGF5ZXIgPSBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkgIT0gQ29tcG9z
aXRlU291cmNlT3ZlciB8fCBvcHRpb25zLmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZTo6Tm9ybWFs
IHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxh
eWVyKSB7CiAgICAgICAgIGNvbnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihhbHBoYSk7CiAg
ICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZTo6Tm9ybWFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgK
aW5kZXggMDc1NDI0ZmM3NWRiZGUwOTkxNzBmZjNmNmViYTZlNmM3MWZkMmUxNS4uNjE0NTg1MzQw
M2I0NzdhZWM3MTFjOGRkNjJmODgzNjU0OTllMDJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmgKQEAgLTk0LDEwICs5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFy
dEFuaW1hdGlvblRpbWVyRmlyZWQoKTsKIAogICAgIGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2Jz
ZXJ2ZXImKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGZyb21SZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5h
bDsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29u
c3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBp
bml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywKLSAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5k
TW9kZSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdG
b3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNp
emUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29u
dGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwg
ZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIFJlZlB0cjxTVkdTVkdF
bGVtZW50PiByb290RWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBjZjhjYzNlNWNlYzhl
ODEyZGU2OWE5ZjQ0YWRiYjdiMDVjNTVjMDA1Li5kNzBhNjQwYzZhMDQ5MWU3ZTE2N2Y5NGMxODBl
Mjc5MWEzMWVhYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZUZvckNvbnRhaW5lci5jcHAKQEAgLTM0LDE2ICszNCwxNSBAQCBGbG9hdFNpemUgU1ZH
SW1hZ2VGb3JDb250YWluZXI6OnNpemUoKSBjb25zdAogICAgIHJldHVybiBGbG9hdFNpemUocm91
bmRlZEludFNpemUoc2NhbGVkQ29udGFpbmVyU2l6ZSkpOwogfQogCi1JbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFp
bmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRl
eHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVS
TCwgZHN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgcmV0dXJu
IG1faW1hZ2UtPmRyYXdGb3JDb250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2Nv
bnRhaW5lclpvb20sIG1faW5pdGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKIH0KIAogdm9pZCBTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBt
X2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNw
YWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWlu
ZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIGRzdFJlY3QsIG9wdGlvbnMpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiB0YXJnZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAppbmRleCA4NjlkMDk3MWM1YjJmZTVkNDk1
MWRkNjAzNDBhZTM2M2NmNzc2ZjA0Li41N2IyMDRkOTgzZmIwN2IxYTdlZDYxYTFhZmViNGViN2Y4
YWEwZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2Ut
PmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWln
aHQsIGludHJpbnNpY1JhdGlvKTsKICAgICB9CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24p
IGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IHsgfSkgZmluYWw7CiAKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTUyZWYx
YThmZTJkNTU1NjQzYWU5NWM1NDVhNjA1Y2Y3NWE3YjM1Yy4uZDFmZWZjNmU4M2Q2MTMxM2IxYmNj
MWMzYTE3ZTQ2MzFhMDY0ODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTI2MTgsNyArMjYxOCw3IEBAIHN0YXRpYyB2
b2lkIGltYWdlUG9zaXRpb25JbmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVt
ZW50LCBjb25zdCBJbnRlCiAgICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAs
IDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSksIHJlbmRlckltYWdl
LmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmlt
YWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdo
dCgpKSwgeyByZW5kZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgaW5mby5pbWFn
ZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377153</attachid>
            <date>2019-08-23 14:10:56 -0700</date>
            <delta_ts>2019-08-27 11:20:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190823141054.patch</filename>
            <type>text/plain</type>
            <size>170378</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MDM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZThjZTc4YWYzMGJiYWQ0
NWFiOTQyZjJmZThjZmM0YWYyNTkwN2NlZC4uMTgxNzFmNzA1YjFhMzQ5N2JkYjE4NjYyZGUzYjQ3
ZmVlMDdiNjhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0wOC0yMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJh
d0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdDcm9zc2ZhZGVTdWJp
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZEltYWdlOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpJ
bWFnZVBhaW50aW5nT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6dXNlc0RlZmF1bHRJbnRlcnBvbGF0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
Om9yaWdpbmFsU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmNvbXBvc2l0ZU9wZXJhdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpibGVuZE1vZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmRlY29kaW5nTW9kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6b3JpZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmludGVy
cG9sYXRpb25RdWFsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zOjpzZXRPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dMYXllckJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0
aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBseSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6YXBwbHkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdl
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFw
c2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRh
aW5lcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
OgorCiAyMDE5LTA4LTIyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2F0Y2hPU10gRGlzYWJsZSBDb250ZW50IEZpbHRlcmluZyBpbiB0aGUgc2ltdWxhdG9yIGJ1
aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGVkZTM1MWQyZjc3ODdhMGQ5YzEwZWJjYmQ2NmMzZDUwYWY3MDU3NjAu
LmY1YmM4YmM5MjcxNWM3OWMyYjZlZWU2ZjA4MWU4Yzk4NGFkYTdlMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTktMDgtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGwgaW1hZ2UgZHJhd2luZyBmdW5jdGlvbnMgc2hvdWxk
IHRha2UgYW4gYXJndW1lbnQgb2YgdHlwZSBJbWFnZVBhaW50aW5nT3B0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDU5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2UoKSBub3cgdGFrZXMgYW4gSW1hZ2VQYWludGluZ09wdGlvbnMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OmltYWdlUG9zaXRpb25JbmZvcm1hdGlvbik6CisKIDIwMTktMDgtMjIgIEFuZHkgRXN0ZXMgIDxh
ZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFt3YXRjaE9TXSBEaXNhYmxlIENvbnRlbnQgRmls
dGVyaW5nIGluIHRoZSBzaW11bGF0b3IgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDdiODI4
MGViZDAyNGYzNGNjNjcxMTJmZjAwMTcxZTY5MWFmZTdkMmUuLjI5NWI0ZjQyM2VmYTE0MGRhNDZl
OGU0ZjEwNGRlOWE3YmZmZmU2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTA2NCw2ICsxMDY0
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRnJhbWUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzg1MmQzZDM5
MzdkNjZlOWRmZjEyOTBkMzFjY2NkODQ2ZjljYjVkYS4uMjdhNjFjZjY5ZWIwMTc4MzA0MTVmM2I0
NTYyY2NkMTM5MDdjYjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4NCw2ICsyMDg0LDcgQEAKIAkJNzIxNDQzMzIyMjNF
Qzg1RjAwRjEyRkY3IC8qIChudWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMz
MzIyM0VDOEIwMDBGMTJGRjcgLyogU1ZHUHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQ
cm9wZXJ0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcyMTQ0MzM0MjIzRUM5MTYwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIx
MDBGQkE5NDQgLyogU1ZHUHJvcGVydHlPd25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFn
ZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0
RUQzMzIxQTNBOEIyMzAwRjVGMTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEz
QyAvKiBKU0VYVEJsZW5kTWluTWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZG
QiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MjRFRTU0RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUx
MURDODBEODQwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIw
MEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQxNyw2ICs5NDE4LDcgQEAKIAkJ
NzI3QUZFRDExQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyN0FGRUQyMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MkMxOEEzRjIzMEIwNEI3MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VQYWludGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJFNDE3NjExQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAwMTRFMTggLyogRVhURnJhZ0Rl
cHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEZyYWdEZXB0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDU1Myw2ICsyNDU1NSw3IEBA
CiAJCQkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLywKIAkJCQlC
QzdGNDRBNzBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4
RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCisJCQkJNzJDMThB
M0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8sCiAJCQkJNDky
OTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1
NDY3NTc3MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1
NzgxRkQxRkMxQTAwM0IxMEIwIC8qIEltYWdlU291cmNlLmggKi8sCkBAIC0yOTU2OSw2ICsyOTU3
Miw3IEBACiAJCQkJMDg5NTgyNTYwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8qIEltYWdl
T3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgy
OCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0Yx
N0Q3RDNBRTAwNzI1MTdBIC8qIEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5MjkxRTRCMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5j
cHAKaW5kZXggNjMxZmFlNzJiMTAzMWE2NTIwNGU3OWZjYmE1YzM2YzZkOWIwOTA1My4uNmIwYzdh
M2Q2N2NkYzdhNWJiNWRlMjk4NGNkMmJhNTVkZjMwMjcwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUJpdG1hcC5jcHAKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQK
ICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXpl
KTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRp
bmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEt
PmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291cmNlUmVj
dGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAgIGJpdG1h
cERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291
cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25RdWFsaXR5
Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAgLy8gNy4g
Q3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0bWFwID0g
Y3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtMzczLDEwICszNzAsNyBAQCB2b2lkIElt
YWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8
SFRNTENhbnZhc0VsZW1lbgogICAgIH0KIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBv
aW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0
aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwot
Ci0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRl
c3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0
aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5k
ZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkg
fSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1
dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC00ODQsMTAg
KzQ3OCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFJlZlB0cjxJbWFnZUJpdG1hcD4mIGV4CiAgICAgYXV0byBpbWFnZUZvclJlbmRl
ciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKTsKIAogICAgIEZs
b2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFp
bnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRl
cnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShv
cHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVs
ZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5
KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBuZXcgSW1h
Z2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShi
aXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQo
KSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25z
OwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7Ci0KLSAg
ICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJj
ZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBi
aXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNvdXJjZVJl
Y3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJl
c2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsKIAogICAgIGF1dG8gaW1hZ2VC
aXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggNTNjOWM1NjYwNDI3YzQ4NmUzMmFiYzBjMmQ2NTRjY2M1NmMwMjhhMy4uOWViOTQ3
ZGYxODA1NTY1OGRhNDY3ZDJjZjMzMmUxMDc2MmJlNGY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTE1NzQsMTcgKzE1NzQsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKERvY3VtZW50JiBkb2N1bWVudCwgQ2EKICAgICAg
ICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKGRvY3Vt
ZW50LnNldHRpbmdzKCkpOwogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVk
RHN0UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJl
Y3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2Rl
KSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3Jt
YWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkg
ewogICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6
ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJl
Q2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAg
IGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5k
TW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwg
bm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0Vu
dGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2Us
IG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxp
emVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAg
ICAgZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTYzMiw3ICsx
NjMyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICNlbmRpZgogCiAgICAgaWYgKHJlY3RD
b250YWluc0NhbnZhcyhkc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdl
QnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3Np
dGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMo
KTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1vZGUoc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdlKCpi
dWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKTsKQEAgLTE2
NDEsMTUgKzE2NDEsMTUgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6ZHJhd0ltYWdlKEhUTUxDYW52YXNFbGVtZW50JiBzb3UKICAgICAgICAgaWYgKCZz
b3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8gY29w
eSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBDb2xvclNwYWNlU1JHQiwgKmMp
KSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgICAgICAgICBjLT5k
cmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUoKSB9LCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9i
YWxCbGVuZCkpOworICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0
UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUs
IHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwotICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVm
ZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRl
KCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICBj
LT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgfQogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0lt
YWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25z
KHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAg
IGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCku
Z2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogICAgICAgICBkaWREcmF3
KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTczMCwxNyArMTczMCwxNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSW1hZ2VCaXRtYXAm
IGltYWdlQml0bQogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1hcCk7CiAKICAgICBpZiAocmVj
dENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigq
YnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1h
Z2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZh
cygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2Uo
KmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAg
ICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2Jh
bENvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0g
ICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxC
bGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3Jj
UmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsK
ICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MjksMTQgKzE4MjksMTQgQEAgdm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wb3NpdGVCdWZmZXIoSW1hZ2VCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgSW4KICAgICBjLT5yZXN0b3JlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGRy
YXdJbWFnZVRvQ29udGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCitzdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2UmIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmMsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9wKTsKKyAgICBjb250ZXh0LmRy
YXdJbWFnZShpbWFnZSwgZGVzdCwgc3JjLCBvcHRpb25zKTsKIH0KIAotc3RhdGljIHZvaWQgZHJh
d0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZm
ZXIsIGRlc3QsIHNyYywgb3ApOworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVm
ZmVyLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0ltYWdl
KFQmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBD
b21wb3NpdGVPcGVyYXRvciBvcCkKQEAgLTE4NjUsNyArMTg2NSw3IEBAIHRlbXBsYXRlPGNsYXNz
IFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0
ZWREcmF3SW1hCiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC10cmFuc2Zvcm1lZEFk
anVzdGVkUmVjdC5sb2NhdGlvbigpKTsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
Y3JvcHBlZE9mZnNldCk7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkuY29uY2F0Q1RNKGVmZmVjdGl2
ZVRyYW5zZm9ybSk7Ci0gICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRl
eHQoKSwgYWRqdXN0ZWREZXN0LCBzcmMsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIGRyYXdJ
bWFnZVRvQ29udGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3Jj
LCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfSk7CiAKICAgICBjb21wb3NpdGVCdWZmZXIoKmJ1ZmZl
ciwgYnVmZmVyUmVjdCwgb3ApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGIyYmQ0N2NiMTYxNGNkYWU1ZDg5ZWVhMTdiNDJj
NDc4NmJjMmQ5YjEuLjYyNjUwNDA3OGI3OTAzN2M4OGMyZTVkMDc4YTBlMWFmOGIxNWYwY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAK
QEAgLTExMiw3ICsxMTIsNyBAQCBFbmNvZGVkRGF0YVN0YXR1cyBCaXRtYXBJbWFnZTo6ZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0
YXR1cyA9IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkOwogICAgIHJldHVybiBtX3NvdXJjZS0+ZGF0
YUNoYW5nZWQoZGF0YSgpLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQotICAgIAorCiB2b2lkIEJpdG1h
cEltYWdlOjpzZXRDdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1c0lmTmVjZXNzYXJ5KERlY29kaW5n
U3RhdHVzIGRlY29kaW5nU3RhdHVzKQogewogICAgIC8vIFdoZW4gbmV3IGRhdGEgaXMgcmVjZWl2
ZWQsIG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgaXMgc2V0IHRvIERlY29kaW5nU3RhdHVz
OjpJbnZhbGlkCkBAIC0xODMsNyArMTgzLDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6bm90U29saWRD
b2xvcigpCiB9CiAjZW5kaWYKIAotSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIG1vZGUs
IERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24p
CitJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChkZXN0UmVj
dC5pc0VtcHR5KCkgfHwgc3JjUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0xOTYsNyArMTk2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXMKICAgICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVz
IFtzdWJzYW1wbGluZ0xldmVsID0gJWQgc2NhbGVGYWN0b3JGb3JEcmF3aW5nID0gKCUuNGYsICUu
NGYpXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSwgc2NhbGVG
YWN0b3JGb3JEcmF3aW5nLndpZHRoKCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy5oZWlnaHQoKSk7
CiAKICAgICBOYXRpdmVJbWFnZVB0ciBpbWFnZTsKLSAgICBpZiAoZGVjb2RpbmdNb2RlID09IERl
Y29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CisgICAgaWYgKG9wdGlvbnMuZGVjb2RpbmdNb2Rl
KCkgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKICAgICAgICAgQVNTRVJUKCFjYW5B
bmltYXRlKCkpOwogICAgICAgICBBU1NFUlQoIW1fY3VycmVudEZyYW1lIHx8IG1fYW5pbWF0aW9u
RmluaXNoZWQpOwogCkBAIC0yMTYsNyArMjE2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMK
IAogICAgICAgICBpZiAoIWZyYW1lSGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhP
cHRpb25zQXRJbmRleChtX2N1cnJlbnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwg
RGVjb2RpbmdPcHRpb25zKERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAg
ICAgIGlmIChtX3Nob3dEZWJ1Z0JhY2tncm91bmQpCi0gICAgICAgICAgICAgICAgZmlsbFdpdGhT
b2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldp
dGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNv
bnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUp
LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXMKICAgICAgICAgQVNTRVJUX0lNUExJRVMoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVz
OjpEZWNvZGluZ0FjdGl2ZSwgKCFtX2N1cnJlbnRGcmFtZSAmJiAhbV9yZXBldGl0aW9uc0NvbXBs
ZXRlKSB8fCBmcmFtZUhhc0Z1bGxTaXplTmF0aXZlSW1hZ2VBdEluZGV4KG1fY3VycmVudEZyYW1l
LCBtX2N1cnJlbnRTdWJzYW1wbGluZ0xldmVsKSk7CiAKICAgICAgICAgaWYgKHN0YXR1cyA9PSBT
dGFydEFuaW1hdGlvblN0YXR1czo6RGVjb2RpbmdBY3RpdmUgJiYgbV9zaG93RGVidWdCYWNrZ3Jv
dW5kKSB7Ci0gICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3Qs
IENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAg
ICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6Onll
bGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yNDUs
NyArMjQ1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICAgICAgfSBlbHNlIGlmIChm
cmFtZUlzQmVpbmdEZWNvZGVkKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBz
aG93aW5nIHRoZSB5ZWxsb3cgcmVjdGFuZ2xlIGFuZCByZXR1cm5pbmcgd2UgbmVlZCB0byB3YWl0
IGZvciB0aGlzIGZyYW1lIHRvIGZpbmlzaCBkZWNvZGluZy4KICAgICAgICAgICAgIGlmIChtX3No
b3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3Io
Y29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAu
NSksIG9wKTsKKyAgICAgICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVz
dFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wdGlvbnMu
Y29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgICAgICAgICAgTE9HKEltYWdlcywgIkJpdG1h
cEltYWdlOjolcyAtICVwIC0gdXJsOiAlcyBbd2FpdGluZyBmb3IgYXN5bmMgZGVjb2RpbmcgdG8g
ZmluaXNoXSIsIF9fRlVOQ1RJT05fXywgdGhpcywgc291cmNlVVJMKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWRSZXF1ZXN0RGVjb2Rpbmc7CkBAIC0yNjQsMTQgKzI2NCwxNSBAQCBJbWFnZURyYXdS
ZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlcwogICAgIEFTU0VSVChpbWFnZSk7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5n
bGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAg
IGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQotICAgICAg
ICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwg
c3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7IG9wdGlvbnMsIGZyYW1lT3JpZW50YXRpb25BdElu
ZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAgICBlbHNlCisgICAgICAgIGRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3B0
aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBz
cmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9wLCBtb2RlLCBvcmllbnRhdGlvbik7CiAgICAgbV9j
dXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1f
Y3VycmVudEZyYW1lKTsKIAogICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCkBAIC0yODAsNyArMjgx
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewogICAgIGlmICh0aWxlUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTI5MCw3ICsyOTEsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAgICAgICAgIGlmICht
X2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID09IERlY29kaW5nU3RhdHVzOjpJbnZhbGlkKQog
ICAgICAgICAgICAgbV9zb3VyY2UtPmRlc3Ryb3lJbmNvbXBsZXRlRGVjb2RlZERhdGEoKTsKICAg
ICAgICAgCi0gICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgICAgICBJ
bWFnZTo6ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCB0cmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0
YXR1cyA9IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNSw3ICszMDYsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpk
cmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsCiAgICAgICAgIC8vIFRlbXBvcmFyaWx5IHJlc2V0IGltYWdlIG9ic2VydmVyLCB3ZSBkb24n
dCB3YW50IHRvIHJlY2VpdmUgYW55IGNoYW5nZUluUmVjdCgpIGNhbGxzIGR1ZSB0byB0aGlzIHJl
bGF5b3V0LgogICAgICAgICBzZXRJbWFnZU9ic2VydmVyKG51bGxwdHIpOwogCi0gICAgICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgb3AsIGJsZW5kTW9kZSwg
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAg
ICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHRpbGVSZWN0LCB0aWxlUmVjdCwgeyBvcHRpb25z
LCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lIH0pOwog
CiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgICAgICBidWZmZXItPmNv
bnZlcnRUb0x1bWluYW5jZU1hc2soKTsKQEAgLTMxNiw3ICszMTcsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsCiAgICAgfQogCiAgICAgY3R4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7
Ci0gICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0
LCB0cmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBib29sIEJpdG1hcEltYWdlOjpzaG91bGRB
bmltYXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCmluZGV4IDVhZWY2MWQ3ZTg5OWJkY2Y1YzRkNDQ1YWFiYzg4YjY4ZjFmMDRhZDUu
LjMyMDJmYmUzMDRlY2ZlYTZmZmM4ZmViNTI3NmI2MGMyYjg1OGUzOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTYxLDggKzE2MSw4
IEBAIHByb3RlY3RlZDoKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxvbmcuCiAgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKTsKIAotICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkg
b3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKICNpZiBQTEFURk9STShXSU4p
CiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3Np
dGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAppbmRl
eCBlYTY0YjFkOTQ4OWIxMDM1NzJkMGM2OTY4OWJkZGEzNDBhYzY3MzNmLi5kNGJkYjVmMjBhYTRh
ZDJhNTczNjVhMzg2YzI2MDJjZDM5M2FlNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCkBA
IC01MCwyMCArNTAsMjEgQEAgc3RhdGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBDb21wb3MKICAgICBib29sIHVzZVRy
YW5zcGFyZW5jeUxheWVyID0gaW1hZ2UuaXNTVkdJbWFnZSgpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIAotICAgIENvbXBvc2l0ZU9w
ZXJhdG9yIGRyYXdJbWFnZU9wZXJhdGlvbiA9IG9wZXJhdGlvbjsKKworICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zIG9wdGlvbnM7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3BlcmF0aW9uKTsKICAgICAgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwotICAgICAgICBkcmF3SW1h
Z2VPcGVyYXRpb24gPSBDb21wb3NpdGVTb3VyY2VPdmVyOwotICAgIH0gZWxzZQorICAgIH0gZWxz
ZSB7CiAgICAgICAgIGNvbnRleHQuc2V0QWxwaGEob3BhY2l0eSk7CisgICAgICAgIG9wdGlvbnMg
PSB7IG9wZXJhdGlvbiB9OworICAgIH0KIAogICAgIGlmICh0YXJnZXRTaXplICE9IGltYWdlU2l6
ZSkKICAgICAgICAgY29udGV4dC5zY2FsZSh0YXJnZXRTaXplIC8gaW1hZ2VTaXplKTsKIAotICAg
IGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhkcmF3SW1hZ2VPcGVyYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgSW50
UG9pbnQoKSwgb3B0aW9ucyk7CiAKICAgICBpZiAodXNlVHJhbnNwYXJlbmN5TGF5ZXIpCiAgICAg
ICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKQEAgLTg2LDEwICs4NywxMCBAQCB2
b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3Q3Jvc3NmYWRlKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKICAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUlt
YWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJh
dGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwog
ICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0
LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkK
QEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLXZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBi
bGVuZE1vZGUpCit2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29u
dGV4dC5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCkBAIC0xMTEsNyAr
MTEyLDcgQEAgdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFIKICAgICBkcmF3Q3Jvc3NmYWRlKGdyYXBo
aWNzQ29udGV4dCk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29u
dGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVu
ZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBz
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAK
IHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAyMWUxMzIzNTE4NWE0ZTg1MmY0ZDAyZGY0Y2QxZjQ2
OThjN2UxY2MwLi4xZGQ3ZWE5ZWMzZmE1ZWIyODlhZjBiMGJhNzI5MDA2Y2I4YjdlNWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHVibGljOgogICAgIEZsb2F0U2l6
ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jcm9zc2ZhZGVTaXplOyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRl
OworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAogICAgIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlKEltYWdlJiBmcm9tSW1hZ2UsIEltYWdlJiB0b0ltYWdlLCBmbG9hdCBwZXJjZW50YWdlLCBj
b25zdCBGbG9hdFNpemUmIGNyb3NzZmFkZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCmluZGV4IGZhYTBiZjA2MTQwNTk4MTJiNjY0MzUxOGU1ODczNzhkMDNlYTc5ZDMuLjJmYjZm
YTQ0ZDg4YmUyYzJjM2NhNzM2ZGMzOGFhMjI0OGY5MjBjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwCkBAIC0xNzAs
MTAgKzE3MCwxMCBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0b21Q
YWludChHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjbwogICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikKK0ltYWdlRHJhd1Jlc3VsdCBDdXN0b21QYWludEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGRlc3RDb250ZXh0KTsKLSAgICBk
ZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7
CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRl
T3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgZGVzdENvbnRleHQuY2xpcChk
ZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkp
OwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC0xODMsNyAr
MTgzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXQKIH0KIAogdm9pZCBDdXN0b21QYWludElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICAvLyBBbGxvdyB0aGUgZ2VuZXJhdG9yIHRvIHByb3ZpZGUgdmlzdWFsbHktZXF1aXZh
bGVudCB0aWxpbmcgcGFyYW1ldGVycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIEZsb2F0
U2l6ZSBhZGp1c3RlZFNpemUgPSBzaXplKCk7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBDdXN0
b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QKICAgICBpZiAoZGVzdENvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkK
ICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICBidWZmZXIt
PmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1
c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsK
KyAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAg
ICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAppbmRl
eCA0ZThlNTg5Nzk1MWE5NTEyNWI5MTM0ODBhZjkzMzAzZWI2NzhkNzFlLi5lNzcwNzliODgyOTZl
ZjEyMGRmMGI2MjQ0MmU4NWUxNzI3ZTZhNWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5oCkBAIC01Miw4ICs1Miw4IEBAIHBy
aXZhdGU6CiAKICAgICBJbWFnZURyYXdSZXN1bHQgZG9DdXN0b21QYWludChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFNpemUmKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb24pIGZpbmFsOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUpIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAKICAgICBXZWFrUHRyPFBhaW50
V29ya2xldEdsb2JhbFNjb3BlOjpQYWludERlZmluaXRpb24+IG1fcGFpbnREZWZpbml0aW9uOwog
ICAgIFZlY3RvcjxTdHJpbmc+IG1faW5wdXRQcm9wZXJ0aWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKaW5kZXggM2E4NTljMzFhYzRm
MDJiYjdhMmNiNDY0MzNkOGQ4YWJhZTYyMWE0MS4uMTA4Njg4Yjk3NTY1N2RhNDdiMTc0ZmY1NzM0
OTlkMWEyZThlNGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HZW5lcmF0ZWRJbWFnZS5oCkBAIC00Niw5ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9
CiAKIHByb3RlY3RlZDoKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KSBvdmVycmlkZSA9IDA7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSkgb3ZlcnJpZGUgPSAwOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlID0gMDsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRl
ID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IDVkNGVlMjgxNjZiYjQ4OGE3OWRjYTI5NGZh
YWNkZjY1YzJhNGY0MGIuLmYzZWMwYTFhZDQ2MDQxMjg3MmQ5MjBlN2UxZTAxMTY3NjZjYTYzZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuY3BwCkBAIC0zOSwxMCArMzksMTAgQEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShH
cmFkaWVudCYgZ2VuZXJhdG9yLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiAKIEdyYWRpZW50SW1h
Z2U6On5HcmFkaWVudEltYWdlKCkgPSBkZWZhdWx0OwogCi1JbWFnZURyYXdSZXN1bHQgR3JhZGll
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihkZXN0Q29udGV4dCk7Ci0g
ICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1v
ZGUpOworICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGRlc3RDb250ZXh0LmNs
aXAoZGVzdFJlY3QpOwogICAgIGRlc3RDb250ZXh0LnRyYW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlv
bigpKTsKICAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtNTMs
NyArNTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhZGllbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlYwogfQogCiB2b2lkIEdyYWRpZW50SW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJvdmlkZSB2aXN1YWxseS1lcXVpdmFs
ZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCiAgICAgRmxvYXRT
aXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHcmFkaWVu
dEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGQKICAgICBkZXN0Q29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7
CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBt
X2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3As
IGJsZW5kTW9kZSk7CisgICAgbV9jYWNoZWRJbWFnZS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNw
YWNpbmcsIG9wdGlvbnMpOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuaAppbmRleCAxZDlkZDkwOGJjMDc2MWU1NTI0ZDFhNDc4ZWE2
YzVlYWZiNzg4ZWZkLi4wY2MxODQzOWMxNDdmOTM0ZGRlMTkzMDc0OGRhNzBjM2ZiMTc1YTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5o
CkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgR3JhZGllbnRJbWFnZShH
cmFkaWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICBib29sIGlzR3Jh
ZGllbnRJbWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAo
V1RGOjpUZXh0U3RyZWFtJikgY29uc3QgZmluYWw7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA3YWY5ZWFl
MDQ3YTc5NjY1MjNlZjQ2OTUzNDU4ZGZkM2M5ZGY5MmU5Li4zMzUxM2RmNGY4MzdmYTY4NmQzZDRi
YWY0OThjMGVlODgxNTMxMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTcxNSw1NSArNzE1LDUwIEBAIEltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0UG9pbnQmIGRlc3RpCiAKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1h
Z2Uub3JpZ2luYWxTaXplKCkpOwotI2Vsc2UKICAgICBGbG9hdFJlY3Qgc3JjUmVjdChGbG9hdFBv
aW50KCksIGltYWdlLnNpemUoKSk7Ci0jZW5kaWYKLSAgICAgICAgCiAgICAgcmV0dXJuIGRyYXdJ
bWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNyY1JlY3QsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
IH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0lt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAg
ICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVy
biBtX2ltcGwtPmRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7
CiAKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlv
blF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291
cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9kZWNvZGluZ01v
ZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24pOworICAgIEludGVycG9sYXRp
b25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhp
cywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJh
dygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBG
bG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBs
KQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAg
ICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25R
dWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNw
YWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5n
TW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0
aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5k
cmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBv
cHRpb25zKTsKIH0KIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsCi0gICAg
SW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKKyAgICBJbWFnZTo6VGlsZVJ1
bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAg
ICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRp
b24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMpOwogCiAg
ICAgaWYgKGhSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3Ry
ZXRjaFRpbGUpIHsKICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4g
ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBp
bnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUs
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IpOworICAgIEludGVycG9s
YXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgq
dGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2Uu
ZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhS
dWxlLCB2UnVsZSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQ
YWludGluZ09wdGlvbnMpCkBAIC03NzYsMTMgKzc3MSwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aQogICAgIGRyYXdJbWFnZUJ1ZmZlcihpbWFnZSwgZGVzdGluYXRpb24sIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZS5sb2dpY2FsU2l6ZSgpKSksIGltYWdlUGFpbnRp
bmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGlu
Z09wdGlvbnMpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEludGVycG9sYXRp
b25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhp
cywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgaW1h
Z2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMu
bV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOwor
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBp
bWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtODAxLDEz
ICs3OTYsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZl
cihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWcKICAgICBkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRlc3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2FsU2l6ZSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkgfHwgIWltYWdlKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBJbWFnZUJ1
ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50
ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RG
TW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAppbmRleCA0NDdkN2UzZTM1NDc2MmU4MGI4ZjI3YTk1MjYyMzIyNzliNWY5
MDk0Li43Y2UxY2JiMGEzODEwYWZjM2RiZTI1YjRmMmRmNDkzNjg4OTNlNDFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50
aW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTIxMCw0MyArMjExLDYgQEAg
c3RydWN0IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKICNlbmRpZgogfTsKIAotc3RydWN0IEltYWdl
UGFpbnRpbmdPcHRpb25zIHsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBi
bGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24g
PSBJbWFnZU9yaWVudGF0aW9uOjpOb25lLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0KQotICAgICAgICA6IG1fY29tcG9zaXRl
T3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRN
b2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBt
X29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxp
dHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0KLQotICAgIEltYWdlUGFpbnRp
bmdPcHRpb25zKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFs
aXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdN
b2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9w
ZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9k
ZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9v
cmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5
KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0KLSAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyhJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdN
b2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykKLSAgICAgICAgOiBtX2NvbXBvc2l0ZU9w
ZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yKQotICAgICAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9k
ZSkKLSAgICAgICAgLCBtX2RlY29kaW5nTW9kZShkZWNvZGluZ01vZGUpCi0gICAgICAgICwgbV9v
cmllbnRhdGlvbihvcmllbnRhdGlvbikKLSAgICAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5
KGludGVycG9sYXRpb25RdWFsaXR5KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCB1c2Vz
RGVmYXVsdEludGVycG9sYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ludGVycG9sYXRpb25RdWFs
aXR5ID09IEludGVycG9sYXRpb25EZWZhdWx0OyB9Ci0KLSAgICBDb21wb3NpdGVPcGVyYXRvciBt
X2NvbXBvc2l0ZU9wZXJhdG9yOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSAgICBEZWNv
ZGluZ01vZGUgbV9kZWNvZGluZ01vZGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0
aW9uOwotICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7Ci19
OwotCiBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgewogICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlKCkgPSBkZWZhdWx0OwogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCkBAIC0zNDcsNyArMzExLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKERJUkVDVDJEKSB8fCBVU0UoQ0FJUk8pCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRp
b24gPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKICNlbmRpZgogCiAjaWYgVVNF
KENHKSB8fCBVU0UoRElSRUNUMkQpCkBAIC0zOTUsMjMgKzM1OSwyMiBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
bGluZVdpZHRoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRp
b25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIFdF
QkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwor
ICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
KyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSwgSW1h
Z2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBG
bG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1h
Z2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdP
cHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFBvaW50JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lk
IGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9s
YXRpb25RdWFsaXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuY3BwCmluZGV4IDk2MzY0OWY1NjlhZTM0NzcwMWQ1MWRhZGRmNDA3
ZjVhZmZhNmMwYTIuLmNlOGUxNzJhMTYxYWU0NmFlYTI4ODI3OWViYzkwODYxM2UyY2NlZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dEltcGwuY3BwCkBAIC0zNywyNyArMzcsMjcgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6
fkdyYXBoaWNzQ29udGV4dEltcGwoKQogewogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQs
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3Bl
cmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7
CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5
Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7Cisg
ICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9u
cyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJ
bWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxv
YXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBG
bG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9y
VGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1
YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9z
aXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRh
dGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHko
KSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291
cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBH
cmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1h
Z2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFw
aGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6
OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRp
bGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8g
YSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJu
IGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlv
bnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBv
bGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRl
eHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29u
dGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2Uu
ZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3Rvciwg
aFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggYjg3MzE5NGVlMjQ2MDFmZTRlMDcxNDdh
YTcxZWEzMDU4N2E4NGE0NS4uOGZiYzVlNTZjZjE1NDg1Mzc3OWM1NTQ0NTQ1ZTllNmExYzljODg3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dEltcGwuaApAQCAtNzMsOSArNzMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJ
bWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSA9IDA7CiAgICAgdmlydHVhbCBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVs
ZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotICAgIHZpcnR1
YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0
UG9pbnQmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAK
aW5kZXggMzk5OTY3MmI5ZjU4OTMyODZjZjMyZGIxY2M2YjgwYTMzMTgyYWRjNC4uZWVlNGNmZTIz
NmEzNTg1Yzc1NTZmYmJhMjU5NmMwMDg2NzZlYTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTM4LDMyICsxMzgsMjggQEAgdm9pZCBJbWFnZTo6
ZmlsbFdpdGhTb2xpZENvbG9yKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LAogfQogCiB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwor
ICAgIGN0eHQuZHJhd1BhdHRlcm4oKnRoaXMsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2
ZXIoKSkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKIH0KIAotSW1h
Z2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3Qg
RmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21w
b3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlIGRlY29k
aW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBJ
bWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGVkVGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlk
Q29sb3IoKTsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29s
aWRDb2xvcihjdHh0LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xp
ZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKICAgICB9CiAKICAg
ICBBU1NFUlQoIWlzQml0bWFwSW1hZ2UoKSB8fCBub3RTb2xpZENvbG9yKCkpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBvcmln
aW5hbFNpemUoKTsKLSNlbHNlCiAgICAgRmxvYXRTaXplIGludHJpbnNpY1RpbGVTaXplID0gc2l6
ZSgpOwotI2VuZGlmCiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmlu
c2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhh
c1JlbGF0aXZlSGVpZ2h0KCkpCkBAIC0xODQsNyArMTgwLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWMKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGls
ZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0
V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICB2aXNpYmxl
U3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0g
ICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3AsIGJs
ZW5kTW9kZSwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIHJldHVybiBkcmF3
KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgfQogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE5Niw3ICsxOTIsNyBAQCBJbWFnZURyYXdSZXN1bHQg
SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0g
b25lVGlsZVJlY3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVT
cmNSZWN0LnNldFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0
KGRlc3RSZWN0LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJu
IGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3Jt
YWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRyYXco
Y3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9y
bWFsIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBp
bnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RSZWN0Lndp
ZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3
ICsyMDAsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAgICAgICAgdmlzaWJsZVNy
Y1JlY3Quc2V0WSgwKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RS
ZWN0LndpZHRoKCkgLyBzY2FsZS53aWR0aCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0
LnNldEhlaWdodCgxKTsKLSAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2
aXNpYmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVu
dGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxl
U3JjUmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgfQogICAg
IH0KICNlbmRpZgpAQCAtMjM2LDcgKzIzMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJh
d1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAg
ICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZyb21SZWN0KHRvRmxvYXRQb2ludChjdXJyZW50VGls
ZVJlY3QubG9jYXRpb24oKSAtIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCkpLCBjdXJyZW50VGlsZVJl
Y3Quc2l6ZSgpKTsKICAgICAgICAgICAgICAgICBmcm9tUmVjdC5zY2FsZSgxIC8gc2NhbGUud2lk
dGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpKTsKIAotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRy
YXcoY3R4dCwgdG9SZWN0LCBmcm9tUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGlu
Z01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQs
IHRvUmVjdCwgZnJvbVJlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2RlOjpOb3JtYWwgfSk7CiAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNv
ZGluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAg
ICB0b1ggKz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkBAIC0yNTAsMTcgKzI0NiwxNyBAQCBJ
bWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFu
c2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwg
c2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGlu
dHJpbnNpY1RpbGVTaXplKTsKLSAgICBkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9w
LCBibGVuZE1vZGUpOworICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgb3B0aW9u
cyk7CiAgICAgc3RhcnRBbmltYXRpb24oKTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWREcmF3OwogfQogCiAvLyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUgb3RoZXIgZHJhd1RpbGVkIGV2
ZW50dWFsbHksIHNpbmNlIHdlIG5lZWQgYSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciBzb21lIHRo
aW5ncy4KLUltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpk
cmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7ICAgIAogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xp
ZENvbG9yKCk7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNv
bGlkQ29sb3IoY3R4dCwgZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xp
ZENvbG9yKGN0eHQsIGRzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkp
OwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogICAgIH0KICAgICAK
QEAgLTMzMCwxOCArMzI2LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0CiAgICAgICAgIHZQ
aGFzZSAtPSAoZHN0UmVjdC5oZWlnaHQoKSAtIHNjYWxlZFRpbGVIZWlnaHQpIC8gMjsKIAogICAg
IEZsb2F0UG9pbnQgcGF0dGVyblBoYXNlKGRzdFJlY3QueCgpIC0gaFBoYXNlLCBkc3RSZWN0Lnko
KSAtIHZQaGFzZSk7Ci0gICAgZHJhd1BhdHRlcm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNlLCBzcGFjaW5nLCBvcCk7CisgICAgZHJhd1BhdHRl
cm4oY3R4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblBoYXNl
LCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFydEFuaW1hdGlvbigpOwogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAKIHZvaWQgSW1hZ2U6OmNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgaW50cmluc2ljUmF0aW8gPSBvcmlnaW5hbFNpemUoKTsKLSNlbHNlCiAgICAgaW50
cmluc2ljUmF0aW8gPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpbnRyaW5zaWNXaWR0aCA9IExlbmd0
aChpbnRyaW5zaWNSYXRpby53aWR0aCgpLCBGaXhlZCk7CiAgICAgaW50cmluc2ljSGVpZ2h0ID0g
TGVuZ3RoKGludHJpbnNpY1JhdGlvLmhlaWdodCgpLCBGaXhlZCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCAzNjk5N2M4MzUyMWM0NmM1Y2Q0NzU1NmQ4
MTQ0ZWU5MjU1MDlhNGE3Li5kNTUwNjc3MzJmN2YzOWEzOTA5OTg4YWI0YWVlMmI1N2FhOTVlZjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTY4LDYgKzY4
LDcgQEAgY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0SW1wbDsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50
aW5nT3B0aW9uczsKIHN0cnVjdCBMZW5ndGg7CiAKIC8vIFRoaXMgY2xhc3MgZ2V0cyBub3RpZmll
ZCB3aGVuIGFuIGltYWdlIGNyZWF0ZXMgb3IgZGVzdHJveXMgZGVjb2RlZCBmcmFtZXMgYW5kIHdo
ZW4gaXQgYWR2YW5jZXMgYW5pbWF0aW9uIGZyYW1lcy4KQEAgLTExNiwxMCArMTE3LDYgQEAgcHVi
bGljOgogICAgIGZsb2F0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKS5oZWlnaHQoKTsg
fQogICAgIHZpcnR1YWwgT3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdmlydHVh
bCBGbG9hdFNpemUgb3JpZ2luYWxTaXplKCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpOyB9Ci0jZW5k
aWYKLQogICAgIFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgdmlydHVh
bCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0YVJlY2VpdmVkKi8p
IHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKQEAgLTE3Myw4ICsxNzAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIHsgcmV0
dXJuIG51bGxwdHI7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAg
ICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xvcigpIHsgcmV0
dXJuIHRydWU7IH0KQEAgLTE5MCw5ICsxODYsOSBAQCBwcm90ZWN0ZWQ6CiAjaWYgUExBVEZPUk0o
V0lOKQogICAgIHZpcnR1YWwgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvcikgeyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pID0gMDsKLSAgICBJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUg
aFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRvcik7CisgICAgdmlydHVhbCBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSA9IDA7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3Is
IFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQgZHJhd2luZwogICAgIHZpcnR1
YWwgQ29sb3Igc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5k
ZXggM2NkNDc1MDkwMWJmMDI3MDI5MzgwOWZiYzU2ZjE3MjRiODZkZmI2Yi4uN2YwYzAxOTJjZmFl
NDE3NDcxZDIwN2NmM2Y1ZjY1YmM4YzQ5OTVlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUg
IkltYWdlQnVmZmVyRGF0YS5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50OENsYW1wZWRBcnJheS5oPgpAQCAtNTEsNyArNTIsNyBAQCBj
bGFzcyBJbWFnZURhdGE7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBI
b3N0V2luZG93OwotICAgIAorCiBlbnVtIEJhY2tpbmdTdG9yZUNvcHkgewogICAgIENvcHlCYWNr
aW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUg
Y29weS4KICAgICBEb250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBh
ZmZlY3QgdGhlIGNvcHkuCkBAIC0xNTEsMTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQg
Zmx1c2hDb250ZXh0KCkgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAgICB2b2lkIGRyYXcoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwotICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRl
cm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7
CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3Vt
aW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29u
c3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0
UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
CiAgICAgaW5saW5lIHZvaWQgZ2VuZXJpY0NvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdP
cHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NWMzZmQ2ZDMzODQxYmMwMzU1NWYwN2M5MDJjOTFkNTEx
Y2RhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kaW5nT3B0aW9ucy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElt
YWdlUGFpbnRpbmdPcHRpb25zIHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBPcHRpb25zPgor
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKE9wdGlvbnMuLi4gb3B0aW9ucykKKyAgICB7CisgICAg
ICAgIHNldE9wdGlvbihvcHRpb25zLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBPdmVycnJpZGVzPgorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvdGhlciwgT3ZlcnJyaWRlcy4uLiBvdmVycnJpZGVzKQorICAgICAgICA6
IEltYWdlUGFpbnRpbmdPcHRpb25zKG90aGVyKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG92
ZXJycmlkZXMuLi4pOworICAgIH0KKworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKCkgPSBkZWZh
dWx0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikgPSBkZWZhdWx0OworCisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Io
KSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0ZU9wZXJhdG9yOyB9CisgICAgQmxlbmRNb2RlIGJs
ZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmxlbmRNb2RlOyB9CisgICAgRGVjb2RpbmdNb2Rl
IGRlY29kaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RpbmdNb2RlOyB9CisgICAgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247
IH0KKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRmlyc3QsIHR5cGVuYW1lLi4uIFJlc3Q+CisgICAgdm9pZCBzZXRPcHRp
b24oRmlyc3QgZmlyc3QsIFJlc3QuLi4gcmVzdCkKKyAgICB7CisgICAgICAgIHNldE9wdGlvbihm
aXJzdCk7CisgICAgICAgIHNldE9wdGlvbihyZXN0Li4uKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
dE9wdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcikgeyBtX2NvbXBvc2l0
ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICB2b2lkIHNldE9wdGlvbihCbGVu
ZE1vZGUgYmxlbmRNb2RlKSB7IG1fYmxlbmRNb2RlID0gYmxlbmRNb2RlOyB9CisgICAgdm9pZCBz
ZXRPcHRpb24oRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSkgeyBtX2RlY29kaW5nTW9kZSA9IGRl
Y29kaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRp
b24oSW1hZ2VPcmllbnRhdGlvbjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRh
dGlvbiA9IG9yaWVudGF0aW9uOyB9CisgICAgdm9pZCBzZXRPcHRpb24oSW50ZXJwb2xhdGlvblF1
YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGlu
dGVycG9sYXRpb25RdWFsaXR5OyB9CisKKyAgICBDb21wb3NpdGVPcGVyYXRvciBtX2NvbXBvc2l0
ZU9wZXJhdG9yIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9OworICAgIEJsZW5kTW9kZSBtX2JsZW5k
TW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CisgICAgRGVjb2RpbmdNb2RlIG1fZGVjb2RpbmdN
b2RlIHsgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyB9OworICAgIEltYWdlT3JpZW50YXRpb24g
bV9vcmllbnRhdGlvbiB7IEltYWdlT3JpZW50YXRpb246Ok5vbmUgfTsKKyAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFsaXR5IHsgSW50ZXJwb2xhdGlvbkRlZmF1bHQg
fTsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDlhNmIwMThkNDJmYTc0
NDg3ZDE0N2FhNmNlNjQ2NmExOWVlYWViM2QuLmQzZDNmYTM5ZTA2ZDg5ZWE2MmMxNzlkOTg4N2Y0
NWJiZjZjOGRiZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNDAsMTEgKzQwLDEx
IEBAIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0
cmluZyBuYW1lLCBjb25zdCBGbG9hdFNpemUmCiAgICAgc2V0Q29udGFpbmVyU2l6ZShzaXplKTsK
IH0KIAotSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVz
dWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1F
KSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIg
c3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihj
b21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAg
IGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAg
LTU3LDEzICs1NywxMiBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogICAgIFVOVVNFRF9QQVJB
TShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFN
KHNyY1JlY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb21wb3NpdGVPcCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIHJldHVybiBJ
bWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0Uo
TkVXX1RIRU1FKQogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQpOwpAQCAtNzQsMTYgKzczLDE1IEBAIHZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0CiAgICAgVGhlbWU6OnNpbmdsZXRvbigpLmRyYXdOYW1lZEltYWdl
KG1fbmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCks
IHNpemUoKS5oZWlnaHQoKSkpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8g
dGhlIGNvbnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJl
Y3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0
UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CisgICAgVU5VU0VEX1BBUkFNKGRz
dFJlY3QpOwogICAgIFVOVVNFRF9QQVJBTShzcmNSZWN0KTsKICAgICBVTlVTRURfUEFSQU0ocGF0
dGVyblRyYW5zZm9ybSk7CiAgICAgVU5VU0VEX1BBUkFNKHBoYXNlKTsKICAgICBVTlVTRURfUEFS
QU0oc3BhY2luZyk7Ci0gICAgVU5VU0VEX1BBUkFNKGRzdFJlY3QpOwotICAgIFVOVVNFRF9QQVJB
TShjb21wb3NpdGVPcCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VE
X1BBUkFNKG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKaW5kZXgg
M2U3Yzk2ZDk0NzFmMTNmNDY5NjMxZmI2ZWY0ZDU0ZmY4NTI1MWIxYy4uMDI4NWUxZjhiOWEyYTUx
NjMyZGZjNGYzNzBhMmEwY2Q2MTNkODBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKQEAgLTM5
LDggKzM5LDggQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJy
aWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1lLCBjb25zdCBG
bG9hdFNpemUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTmF0aXZlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2
ZUltYWdlLmgKaW5kZXggZDBmZjY3ZWZlMWE2YzJmYjlkMmNlZGM3NTg3NWZkODgwZTZiNTczMS4u
ZTA5NjU2ZWFmMzFiY2U2OTgxY2VkNWQzNDZmYTliMTc4OTU2NWZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCkBAIC0yNyw4ICsyNyw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgotI2luY2x1ZGUg
IkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgog
CiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTY2LDcgKzY1LDcg
QEAgSW50U2l6ZSBuYXRpdmVJbWFnZVNpemUoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIGJvb2wg
bmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3IgbmF0aXZl
SW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsKIAotdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXplJiwgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7Cit2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA3NDY0
MGY3MDRlY2U0OTZkYTQwYWY0MTNiYTZmNGQ5YmRlYWY0MTliLi5hODk1ZGFkZDA0MjFiN2VkMDkx
MTI4ZDIzZjY1ZjVkZDk0NGE0NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTE3OSw4ICsx
NzksNyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgSW1hZ2VCdQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpIHsK
LSAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwg
RmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmdsb2JhbENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwKLSAg
ICAgICAgICAgIEludGVycG9sYXRpb25EZWZhdWx0LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwg
U2hhZG93U3RhdGUoKSk7CisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQs
IHN1cmZhY2UuZ2V0KCksIEZsb2F0UmVjdChyb3VuZGVkSW50UG9pbnQobGF5ZXJPcmlnaW4pLCBs
YXllclNpemUpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBsYXllclNpemUpLCB7IHNoYWRvd1N0
YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yIH0sIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBT
aGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTE5Miw4ICsxOTEsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3U2hhZG93SW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwg
SW1hZ2VCdWZmZXImCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBp
bWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZl
SW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
c2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQs
IHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05h
dGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUu
Z2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtODc4LDM3ICs4NzYs
MzcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0K
IAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCBn
bG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9pZCBkcmF3TmF0
aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBn
bG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQogewogICAgIHBsYXRm
b3JtQ29udGV4dC5zYXZlKCk7CiAKICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlv
bi4KLSAgICBpZiAoY29tcG9zaXRlT3BlcmF0b3IgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBi
bGVuZE1vZGUgPT0gQmxlbmRNb2RlOjpOb3JtYWwgJiYgIWNhaXJvU3VyZmFjZUhhc0FscGhhKHN1
cmZhY2UpKQorICAgIGlmIChvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciAmJiBvcHRpb25zLmJsZW5kTW9kZSgpID09IEJsZW5kTW9kZTo6Tm9ybWFsICYm
ICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBDb21wb3NpdGVDb3B5LCBCbGVu
ZE1vZGU6Ok5vcm1hbCk7CiAgICAgZWxzZQotICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUpOworICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9y
bUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUo
KSk7CiAKICAgICBGbG9hdFJlY3QgZHN0ID0gZGVzdFJlY3Q7Ci0gICAgaWYgKG9yaWVudGF0aW9u
ICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
bigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKICAgICAgICAgLy8gSW1hZ2VPcmllbnRh
dGlvbiBleHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgYXQgKDAsIDApLgogICAgICAgICBDYWlybzo6
dHJhbnNsYXRlKHBsYXRmb3JtQ29udGV4dCwgZHN0LngoKSwgZHN0LnkoKSk7CiAgICAgICAgIGRz
dC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwotICAgICAgICBDYWlybzo6Y29uY2F0Q1RNKHBs
YXRmb3JtQ29udGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoZHN0LnNpemUo
KSkpOwotICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAg
ICAgICBDYWlybzo6Y29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlv
bigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5zaXplKCkpKTsKKyAgICAgICAgaWYgKG9wdGlv
bnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIHdpbGwgaGF2ZSBpdHMgd2lkdGggYW5kIGhlaWdodCBh
bHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRo
ZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8g
cmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBkc3QgPSBGbG9hdFJlY3QoZHN0Lngo
KSwgZHN0LnkoKSwgZHN0LmhlaWdodCgpLCBkc3Qud2lkdGgoKSk7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVj
dCwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsK
KyAgICBkcmF3U3VyZmFjZShwbGF0Zm9ybUNvbnRleHQsIHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwg
b3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUp
OwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJhd1BhdHRlcm4o
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBz
dXJmYWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgZHJhd1BhdHRlcm4oUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlLCBjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgd2h5IHRoZSBzaXplIGhh
cyB0byBiZSBwYXNzZWQgaW4gYXMgYW4gSW50UmVjdC4KLSAgICBkcmF3UGF0dGVyblRvQ2Fpcm9D
b250ZXh0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBzdXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHRvQ2Fpcm9PcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvciwg
YmxlbmRNb2RlKSwgZGVzdFJlY3QpOworICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxh
dGZvcm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSksIGRlc3RSZWN0KTsKIH0KIAogdm9pZCBkcmF3U3VyZmFjZShQ
bGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgb3JpZ2lu
YWxTcmNSZWN0LCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVy
YXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09w
ZXJhdGlvbnMuaAppbmRleCAwODVlNjFhNWIzYzljN2M5NzIxNmIzYzdiY2Q2ZDc2OTI1OGNjODRm
Li41ODM0ZjQzMGYwNWRkMTU4MzczOGUzMWU0MzNkMjcxNDBhNmNkMmFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlv
bnMuaApAQCAtMTM4LDggKzEzOCw4IEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBT
aGFkb3dTdGF0ZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2FsZWRfZm9udF90KiwgZG91
YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwgVGV4dERyYXdpbmdNb2Rl
RmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYpOwogCi12b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29u
c3QgU2hhZG93U3RhdGUmKTsKLXZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1
cmZhY2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNv
bnN0IFNoYWRvd1N0YXRlJik7CiAKIHZvaWQgZHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
LCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBTdHJva2VTdHlsZSwgY29u
c3QgQ29sb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCAyM2Y2NTNlYmUz
NzUyMWZjNzI1YWQzYmExOTJlMzU0MGJhYzE5ZWVkLi5kNTAzOWI5NzIxMTY0ZDIxZGJkMmQ4YTVk
NzhkMDMzZWQxYjVkZmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMjAs
MTkgKzEyMCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpw
bGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgYm9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3Is
IHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHIm
IGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwg
YmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdl
KGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAg
YXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2Uo
KnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBv
c2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9s
YXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Cisg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAog
Ly8gVGhpcyBpcyBvbmx5IHVzZWQgdG8gZHJhdyBib3JkZXJzLCBzbyB3ZSBzaG91bGQgbm90IGRy
YXcgc2hhZG93cy4KQEAgLTY2MCwxOSArNjYwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0
CiAgICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNvbnRleHQoKSwg
cmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpT
aGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRl
cm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBH
cmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9pbXBsKSB7Ci0gICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wZXJh
dG9yLCBibGVuZE1vZGUpOworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRl
eHQoKSk7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCks
IHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7
CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybigqcGxhdGZvcm1Db250ZXh0KCksIHN1cmZhY2Uu
Z2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDA0ZjJhOWZmNTQ2OWFhNWJhMjRkMTQ5NTY1NGI2MGYw
YmM0M2QyYWIuLjg1MmEyNzZmN2ZjNjYxNmE5OTA0YWZlZWIwZTk5MDk3MDgwNjIzM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDE3ICsyNzYsMTcgQEAg
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG8KICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6
ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4dCgpLCBpbWFnZSwgZGVzdGluYXRpb24s
IHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm86OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRlID0gZ3JhcGhpY3ND
b250ZXh0KCkuc3RhdGUoKTsKLSAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKG1fcGxhdGZvcm1D
b250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9y
LCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRy
YXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKQotICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0
Zm9ybUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRlT3BlcmF0b3Is
IGJsZW5kTW9kZSk7CisgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4
dCwgc3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCBm
MWIwMmQzNGFiMmZmMjlhZGNmYjg3NDNjODk0YzFlNDYwOGI2NzNiLi4yZjUxOWQ0NTQ3N2Q0Mzc5
OGI3NTlhODE1MzQ2MmM5ODM1MzdjZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uaApAQCAtNzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwg
SW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKaW5kZXggZTAxZTYwYjllZWU3YmExODM5N2E2M2VmNGExNzY2N2Zm
ZGM0YTQ1YS4uMGY3MjY1NzAyNGViYWM3NDBiMGU3OGY3MzJhYzkzZmIwZGRiN2QxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyby5jcHAKQEAgLTM0NCwyNCArMzQ0LDIzIEBAIEJhY2tpbmdTdG9yZUNvcHkg
SW1hZ2VCdWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKICAgICByZXR1cm4gRG9udENvcHlCYWNr
aW5nU3RvcmU7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJl
Y3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RD
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwKLSAgICBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIEJhY2tpbmdTdG9yZUNvcHkgY29weU1vZGUgPSAmZGVzdGlu
YXRpb25Db250ZXh0ID09ICZjb250ZXh0KCkgPyBDb3B5QmFja2luZ1N0b3JlIDogRG9udENvcHlC
YWNraW5nU3RvcmU7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGNvcHlJbWFnZShjb3B5TW9k
ZSk7Ci0gICAgZGVzdGluYXRpb25Db250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBz
cmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSk7CisgICAgZGVzdGluYXRpb25D
b250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0K
IAogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSkKLSAgICAgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3ApOworICAgICAgICBpbWFnZS0+
ZHJhd1BhdHRlcm4oY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZv
cm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiYgbG9v
a1VwVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCmluZGV4IDgyM2ZmMGM3ZDc2YzgzZWFlZDYz
ZWM5OGZmMTRmMDJhMzQwYmY5YzIuLmRlMzA0ZjM1ZjY1MjljZDZmZDE1OGU5YTAzYzlmMTBjM2Q1
YmZjMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L05hdGl2ZUltYWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCkBAIC01Nyw5ICs1Nyw5IEBAIENvbG9yIG5h
dGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSkKICAgICByZXR1cm4gY29sb3JGcm9tUHJlbXVsdGlwbGllZEFSR0IoKnBpeGVsKTsKIH0KIAot
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3
TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0
ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IDg3Yzk5MDc5YmEwZmExNDUzMmVmMjUzNzZiYTI1
MDI2OGFjMDk1ZmIuLmNkNmJiNzMwZTYxNjE5MTkzZWNlNjBhOTdlZjg4OGQ3N2VmYjYxMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dDNEQ0cuY3BwCkBAIC01MzksNyArNTM5LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywg
Y29uc3QgSW4KICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwogICAgIGNvbnRl
eHQudHJhbnNsYXRlKDAsIC1pbWFnZVNpemUuaGVpZ2h0KCkpOwogICAgIGNvbnRleHQuc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgY29udGV4dC5k
cmF3TmF0aXZlSW1hZ2UoY2dJbWFnZSwgaW1hZ2VTaXplLCBjYW52YXNSZWN0LCBGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZVNpemUpLCBDb21wb3NpdGVDb3B5KTsKKyAgICBjb250ZXh0LmRy
YXdOYXRpdmVJbWFnZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIGltYWdlU2l6ZSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4IGUzZmIzODRkYjMyNzk0NjI5
NTk4YzI5Y2JhNTA3MzE2MzkwMTg4YjkuLmVlMjczOGY0MjEwYzY5MmMzNWI5MmE4ZGU4OWFmZGEy
NzBiZDhiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSgpCiAgICAgbV9kYXRhLT5tX3Vz
ZXJUb0RldmljZVRyYW5zZm9ybUtub3duVG9CZUlkZW50aXR5ID0gZmFsc2U7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3As
IEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdl
UmVmPiYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZl
SW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdAogI2VuZGlm
CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlKGltYWdlKTsKIAotICAgIGZsb2F0
IGN1cnJIZWlnaHQgPSBvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpID8gQ0dJbWFnZUdl
dFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1hZ2UuZ2V0KCkp
OworICAgIGZsb2F0IGN1cnJIZWlnaHQgPSBvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRo
QXNIZWlnaHQoKSA/IENHSW1hZ2VHZXRXaWR0aChzdWJJbWFnZS5nZXQoKSkgOiBDR0ltYWdlR2V0
SGVpZ2h0KHN1YkltYWdlLmdldCgpKTsKICAgICBpZiAoY3VyckhlaWdodCA8PSBzcmNSZWN0Lnko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTgsMTUgKzM1OCwxNSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1h
Z2UsIGNvbnN0CiAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IHJvdW5kVG9EZXZpY2VQaXhlbHMoYWRq
dXN0ZWREZXN0UmVjdCk7CiAjZW5kaWYKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0
aW9uKG9wLCBibGVuZE1vZGUpOworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKG9w
dGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAv
LyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkKICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgYWRqdXN0ZWREZXN0UmVjdC54KCksIGFk
anVzdGVkRGVzdFJlY3QueSgpKTsKICAgICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZs
b2F0UG9pbnQoKSk7CiAKLSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSkgewotICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3JpZW50YXRpb24u
dHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5zaXplKCkpKTsKLSAgICAgICAg
aWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICBpZiAob3B0aW9ucy5v
cmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKKyAgICAgICAgQ0dDb250
ZXh0Q29uY2F0Q1RNKGNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9t
RGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5v
cmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBk
ZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSBy
ZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2Us
IGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2Ug
aXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChh
ZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJl
Y3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkBAIC00MDgsMTMgKzQwOCwx
MyBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAg
fSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1h
Z2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwg
IXBhdHRlcm5UcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5k
TW9kZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QKICAgICBDR0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CiAgICAg
Q0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CiAKLSAgICBzZXRQbGF0Zm9y
bUNvbXBvc2l0ZU9wZXJhdGlvbihvcCwgYmxlbmRNb2RlKTsKKyAgICBzZXRQbGF0Zm9ybUNvbXBv
c2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRN
b2RlKCkpOwogCiAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIGRlc3RSZWN0Lngo
KSwgZGVzdFJlY3QueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkpOwogICAgIENHQ29udGV4dFNjYWxl
Q1RNKGNvbnRleHQsIDEsIC0xKTsKQEAgLTQzOSwxMSArNDM5LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QKICAgICBmbG9hdCBoID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkp
OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgp
OwotI2Vsc2UKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlm
CiAgICAgaWYgKHRpbGVSZWN0LnNpemUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdl
ID0gdGlsZUltYWdlOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCBkMzVmZjBlZmY5NzE5NTBl
ZWQxZTNmZDAyNmJjZGE5ZWFmYTM0ZTQ2Li44MzdiODc3M2Y2ZTM5YzI3OTU0MzM2NjI3MjA5ODA0
YjYzY2VmZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzM0LDExICszMzQsMTEgQEAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlQnVmZmVyOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBj
b3B5QmVoYXZpb3IKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRy
YXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3Jh
cGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoSU9TVVJGQUNFX0NB
TlZBU19CQUNLSU5HX1NUT1JFKQogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNl
KSB7Ci0gICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250
ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCkBAIC0zNTEsMTMgKzM1MSwxMyBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3Vt
aW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaQogICAg
IAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVk
U3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShpbWFnZS5nZXQoKSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdl
KGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0
LCBvcHRpb25zKTsKICNlbHNlCi0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRl
c3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhk
ZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlmCiB9CiAKLXZv
aWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAgaWYgKCZkZXN0
Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0ZWRDb250ZXh0
KCkpCkBAIC0zNjcsMTAgKzM2NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsCiAKICAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAgIGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRq
dXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlvblNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0
IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgaWYgKCFjb250ZXh0KCkuaXNBY2NlbGVy
YXRlZENvbnRleHQoKSkgewogICAgICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZjb250ZXh0KCkg
fHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkgewogICAgICAgICAgICAgaWYg
KFJlZlB0cjxJbWFnZT4gY29weSA9IGNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKSkgLy8gRHJh
d2luZyBpbnRvIG91ciBvd24gYnVmZmVyLCBuZWVkIHRvIGRlZXAgY29weS4KLSAgICAgICAgICAg
ICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwor
ICAgICAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwg
YWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9u
cyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBpbWFn
ZUZvclJlbmRlcmluZyA9IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSkpCi0gICAgICAg
ICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0
UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywg
b3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICAgICAgaW1hZ2VGb3JSZW5kZXJpbmctPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJh
bnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAoUmVmUHRyPEltYWdlPiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5n
U3RvcmUpKQotICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RS
ZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBv
cCwgYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGNvcHktPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCmluZGV4IGYwMmQ1ZDU2NjBhNmM4
YTExMWQ1YmM4MjEwZjZkNWQ5ZmVhZDNiZDguLjgyOTQxMTY2MWU5ODcwNjBlMDNiM2YwM2UwZTZk
YmMxZTdkMjA0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCkBAIC02OSw3ICs2OSw3IEBAIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAg
ICByZXR1cm4gQ29sb3IocGl4ZWxbMF0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbMV0gKiAyNTUg
LyBwaXhlbFszXSwgcGl4ZWxbMl0gKiAyNTUgLyBwaXhlbFszXSwgcGl4ZWxbM10pOwogfQogCi12
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIG1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICAvLyBTdWJzYW1wbGluZyBtYXkgaGF2ZSBnaXZlbiB1cyBhbiBp
bWFnZSB0aGF0IGlzIHNtYWxsZXIgdGhhbiBzaXplKCkuCiAgICAgSW50U2l6ZSBzdWJzYW1wbGVk
SW1hZ2VTaXplID0gbmF0aXZlSW1hZ2VTaXplKGltYWdlKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnMKICAgICBpZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNT
aXplKQogICAgICAgICBhZGp1c3RlZFNyY1JlY3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVj
dCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3QoeyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAK
LSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwg
ZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBj
b250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJl
Y3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFn
ZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmlu
ZGV4IDNkNDNjZmI0MTExZTdiOGJmMWRmYjFiMGU3ODMzMmY2NmEyYjE0OTYuLmE2MGYxMjVhMDEx
MDM3MzZiYTc1MTdlMzYzYWE0YTk4ZDYyMTA5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yNTcs
NyArMjU3LDcgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVl
ZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAgICBkZWNvZGVkU2l6ZUNoYW5n
ZWQoaW50ZXJuYWxTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQpOwogfQogCi1JbWFnZURyYXdSZXN1
bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJ
bWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgIW1faGFzUGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlk
Tm90aGluZzsKQEAgLTI2Niw3ICsyNjYsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8g
RHJhdyB0aGUgSW1hZ2VCdWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5n
bGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IDliZjE2N2M0NTU0MjAxNjBi
OGIwZjg5NzNhN2QxNzk1NGY2NjE3NTUuLjI3ZDllNzgwMDc5OGUzZTJkMWRkYTEyZWRmZDVkMzYw
MWJmYTM5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlk
ZTsKICAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
b3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25z
ZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
Y3BwCmluZGV4IGI3MTNlODVlZmM0ODZhZTFhZTFlMGQ3MzAzNjFkOWE1NGIyOGM4ODcuLmQzOWI2
NjJhNGFhOGFiNjQ2YjMzMTcwMTAyZGI2ZmM4Y2Q4MmExNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJhd1RpbGVkU2NhbGVkSW1hZ2UmIGl0
ZW0pCiB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQotRHJh
d05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK0RyYXdOYXRpdmVJbWFn
ZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAg
OiBEcmF3aW5nSXRlbShJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlKQogI2lmIFVTRShDRykKICAg
ICAvLyBGSVhNRTogTmVlZCB0byBzdG9yZSBhbiBpbWFnZSBmb3IgQ2Fpcm8uCkBAIC00OTYsMjMg
KzQ5NiwxNyBAQCBEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaQogICAgICwgbV9pbWFnZVNpemUoaW1h
Z2VTaXplKQogICAgICwgbV9kZXN0aW5hdGlvbihkZXN0UmVjdCkKICAgICAsIG1fc3JjUmVjdChz
cmNSZWN0KQotI2lmIFVTRShDRykKLSAgICAsIG1fb3Aob3ApCi0gICAgLCBtX2JsZW5kTW9kZShi
bGVuZE1vZGUpCi0jZW5kaWYKLSAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCisgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKIHsKICNpZiAhVVNFKENHKQogICAgIFVOVVNFRF9QQVJBTShp
bWFnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKG9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2Rl
KTsKICNlbmRpZgogfQogCiB2b2lkIERyYXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAogewogI2lmIFVTRShDRykKLSAgICBjb250ZXh0LmRyYXdOYXRp
dmVJbWFnZShtX2ltYWdlLCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBt
X29wLCBtX2JsZW5kTW9kZSwgbV9vcmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24sIG1fc3JjUmVjdCwgbV9v
cHRpb25zKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogI2VuZGlmCkBAIC01
MjgsNyArNTIyLDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKIH0KICNlbmRpZgogCi1EcmF3UGF0dGVy
bjo6RHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorRHJhd1BhdHRl
cm46OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJ
dGVtKEl0ZW1UeXBlOjpEcmF3UGF0dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBt
X3BhdHRlcm5UcmFuc2Zvcm0ocGF0dGVyblRyYW5zZm9ybSkKQEAgLTUzNiwxNCArNTMwLDEzIEBA
IERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjCiAgICAgLCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQog
ICAgICwgbV9waGFzZShwaGFzZSkKICAgICAsIG1fc3BhY2luZyhzcGFjaW5nKQotICAgICwgbV9v
cChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKKyAgICAsIG1fb3B0aW9ucyhvcHRp
b25zKQogewogfQogCiB2b2lkIERyYXdQYXR0ZXJuOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3UGF0dGVybihtX2ltYWdlLmdldCgpLCBt
X2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1f
c3BhY2luZywgbV9vcCwgbV9ibGVuZE1vZGUpOworICAgIGNvbnRleHQuZHJhd1BhdHRlcm4obV9p
bWFnZS5nZXQoKSwgbV9kZXN0aW5hdGlvbiwgbV90aWxlUmVjdCwgbV9wYXR0ZXJuVHJhbnNmb3Jt
LCBtX3BoYXNlLCBtX3NwYWNpbmcsIG1fb3B0aW9ucyk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3UGF0dGVybiYgaXRlbSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDhiY2NlMTliMjRlMWZmNWY2NWI2YmY0
OGM5NDE3MGM5YjdlMDFmYjguLmNmM2NmOTI5MzBjNDZkYmU2YzcyOTdhNWE5MWNlMjUxMjVjYmE3
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtNjQxLDE2ICs2NDEsMTYg
QEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykgfHwgVVNFKERJUkVDVDJEKQog
Y2xhc3MgRHJhd05hdGl2ZUltYWdlIDogcHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCisgICAgc3Rh
dGljIFJlZjxEcmF3TmF0aXZlSW1hZ2U+IGNyZWF0ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1h
Z2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBv
cmllbnRhdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsKICAgICB9
CiAKICAgICBGbG9hdFJlY3Qgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAg
ICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQogCiBwcml2YXRlOgotICAgIERyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbik7CisgICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwog
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIApAQCAt
NjYyLDE5ICs2NjIsMTUgQEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7CiAg
ICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CiAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKLSNp
ZiBVU0UoQ0cpCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9vcDsKLSAgICBCbGVuZE1vZGUgbV9i
bGVuZE1vZGU7Ci0jZW5kaWYKLSAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Cisg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMgbV9vcHRpb25zOwogfTsKICNlbmRpZgogCiBjbGFzcyBE
cmF3UGF0dGVybiA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxEcmF3UGF0dGVybj4gY3JlYXRlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAg
ICBzdGF0aWMgUmVmPERyYXdQYXR0ZXJuPiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4oaW1hZ2Us
IGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9w
LCBibGVuZE1vZGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHJhd1BhdHRlcm4o
aW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpKTsKICAgICB9CiAKICAgICBjb25zdCBJbWFnZSYgaW1hZ2UoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CkBAIC02ODUsNyArNjgxLDcgQEAgcHVibGljOgogICAg
IEZsb2F0U2l6ZSBzcGFjaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjaW5nOyB9CiAKIHByaXZh
dGU6Ci0gICAgRHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgRHJhd1BhdHRlcm4oSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAK
ICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02
OTcsOCArNjkzLDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAg
ICBGbG9hdFBvaW50IG1fcGhhc2U7CiAgICAgRmxvYXRTaXplIG1fc3BhY2luZzsKLSAgICBDb21w
b3NpdGVPcGVyYXRvciBtX29wOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCiAvLyBJcyBEcmF3aW5nSXRlbSBiZWNh
dXNlIHRoZSBzaXplIG9mIHRoZSB0cmFuc3BhcmVuY3kgbGF5ZXIgaXMgaW1wbGljaXRseSB0aGUg
Y2xpcCBib3VuZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggZTc5N2E3ZmQ0Mjg3MThkMzk3MDgwMjU0YTJmZmQ2MTYyM2NhNjU0ZS4uZTIwZjNlZDEzY2I2
ZTU1Zjc4MmU4YzlhZGMxMzA4NzJkZTZlZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcApAQCAtMTI3LDE2ICsxMjcsMTYgQEAgSW1hZ2VEcmF3UmVzdWx0IFJl
Y29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXQKIH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi12
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAg
IERyYXdpbmdJdGVtJiBuZXdJdGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0o
RHJhd05hdGl2ZUltYWdlOjpjcmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJ
dGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKSk7CiAg
ICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KICNlbmRpZgogCi12b2lkIFJlY29yZGVy
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIFJlY29y
ZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2lu
Z0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0
dGVybjo6Y3JlYXRlKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0s
IHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKSkpOworICAgIERyYXdpbmdJdGVtJiBuZXdJ
dGVtID0gZG93bmNhc3Q8RHJhd2luZ0l0ZW0+KGFwcGVuZEl0ZW0oRHJhd1BhdHRlcm46OmNyZWF0
ZShpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3Bh
Y2luZywgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5ld0l0ZW0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCAzMTc5OGMxYjJkNDc0Mzc0
OThmYzMxNWFjMTYzZDM1ZTQ2NzUzN2YwLi41MTZkNGRmOGM3ZmQ5ZWI1ZjI5OTc1NjU4ZGQ3NjNk
MTgwMGMzY2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTky
LDkgKzkyLDkgQEAgcHJpdmF0ZToKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0
b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJP
KSB8fCBVU0UoRElSRUNUMkQpCi0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25l
c3MpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0
IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCmluZGV4IGJlZjNhZDkwNzFlZThjNDUwZDkx
ZjliZjk4MjQ4NTU1ODBlMWY0MTcuLmU0ZDcyOTU3YjBjZGU4N2YxN2ZmOTcyZmNiNzE5N2M5NTlm
MzMwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUJsZW5kLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEZFQmxlbmQ6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZpbHRlckNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4y
LT5hYnNvbHV0ZVBhaW50UmVjdCgpKSk7Ci0gICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBh
aW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSksIEltYWdlUGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpOwor
ICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZHJhd2luZ1Jl
Z2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWludFJlY3QoKSksIEludFJlY3QoSW50UG9p
bnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCB7IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IG1fbW9kZSB9KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCmluZGV4IDUzMjNiZWRhYTU3
MGE0YjIxMjQxNjhjNDY1YjQ5NTFjMDQxZjQzOWEuLmQ1NmRiNDBjMDQ5NGRiMTczZjAwMTc0NGI1
YzFiYzRkMmMxYTVhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCkBAIC0yNzAsOCArMjcwLDggQEAgdm9p
ZCBGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgSW50UmVjdCBh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRlUGFpbnRS
ZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVzdGluYXRp
b25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50
UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQYWludFJl
Y3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigq
aW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3QpOwotICAg
ICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFkanVzdGVk
RGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7CisgICAgICAg
IGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIEZsb2F0UmVjdChh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2UyUmVjdCkpOworICAgICAg
ICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIEZsb2F0UmVjdChh
ZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2VSZWN0KSwgeyBDb21wb3Np
dGVTb3VyY2VJbiB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVDT01QT1NJ
VEVfT1BFUkFUT1JfT1VUOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGIwMmUyOGVkY2Q0MDdmZGZmOGNiZWE3OGFkMWE2ZTdi
MGM3YjU4YTkuLjA4MmYxOTQ0ZTk0NTk2ZWM0ZDY5MTIwNmJkNDViNDEyMjUxMTk1M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAK
QEAgLTg4NSwxNSArODg1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hCiAgICAgaWYgKCFH
U1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwotICAgIGlm
IChtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5t
X29yaWVudGF0aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCiAgICAgYXV0byBnc3RJ
bWFnZSA9IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAg
aWYgKCFnc3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2Uo
Z3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9u
cyk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdElt
YWdlLT5yZWN0KCksIHsgQ29tcG9zaXRlQ29weSwgbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVk
ID8gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uIDogSW1hZ2VPcmllbnRhdGlvbigpIH0pOwogfQog
CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKaW5kZXggNTBlMGMzYzdkOTc2ODI2YmE3YmI4
MTg1ZDFlZTE0MjEyOWFkYTAyYy4uMWQyYWY2OWZkNmZhNzgzZjBmYzE2NjFhODY4MGMyYjEwNjhj
MTZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKQEAgLTU0OSwxNCArNTQ5LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0CiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChn
cmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZh
Y3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRy
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24pCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1h
Z2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgQ2Fp
cm86OlNoYWRvd1N0YXRlPiB7CisgICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMsIGZsb2F0LCBDYWlybzo6
U2hhZG93U3RhdGU+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd05hdGl2ZUltYWdlKCkgPSBkZWZh
dWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVw
bGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZl
SW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4o
KSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8
Nz4oKSwgYXJnPDg+KCkpOworICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250
ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4o
KSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRlCkBAIC01NjcsMTcgKzU2NywxNyBAQCB2
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYgaW1hZ2UsIGNvbnN0CiAKICAgICBVTlVTRURfUEFSQU0oaW1hZ2VTaXplKTsKICAg
ICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgpLnN0YXRlKCk7Ci0gICAgYXBwZW5kKGNy
ZWF0ZUNvbW1hbmQ8RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFn
ZS5nZXQoKSksIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2Rl
LCBvcmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUuYWxw
aGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpKTsKKyAgICBhcHBlbmQoY3JlYXRlQ29tbWFu
ZDxEcmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwg
ZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRl
KHN0YXRlKSkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewotICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3BlcmF0aW9uLCBP
cGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBGbG9hdFJlY3Qs
IEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlPiB7CisgICAgc3RydWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdP
cGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEludFNpemUs
IEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQsIEltYWdl
UGFpbnRpbmdPcHRpb25zPiB7CiAgICAgICAgIHZpcnR1YWwgfkRyYXdQYXR0ZXJuKCkgPSBkZWZh
dWx0OwogCiAgICAgICAgIHZvaWQgZXhlY3V0ZShQYWludGluZ09wZXJhdGlvblJlcGxheSYgcmVw
bGF5ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKLSAgICAgICAgICAgIENhaXJvOjpkcmF3UGF0dGVy
bihjb250ZXh0Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBh
cmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwgYXJnPDY+KCksIGFyZzw3Pigp
KTsKKyAgICAgICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihjb250ZXh0Rm9yUmVwbGF5KHJlcGxh
eWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwgYXJnPDM+KCksIGFyZzw0
PigpLCBhcmc8NT4oKSwgYXJnPDY+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1w
KFRleHRTdHJlYW0mIHRzKSBvdmVycmlkZQpAQCAtNTg4LDcgKzU4OCw3IEBAIHZvaWQgQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0CiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CiAgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpCi0gICAgICAgIGFw
cGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1cmZhY2UpLCBJbnRTaXpl
KGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYXBwZW5kKGNyZWF0
ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6
ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9u
cykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCmluZGV4IGRiZDY3MjMxNDg0
ZjkxODcyMWNjMGJmZGQ4NjM4NWU3ZmU1Yjg5ZjkuLjgyNjBjNDhhZDc5ODY4NGM2ZTU3YzFkNjZk
ZmJlNmQwMTAxYzFmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKQEAgLTY3LDggKzY3LDggQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbWFnZURyYXdSZXN1bHQg
ZHJhd1RpbGVkSW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBX
ZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIFdlYkNvcmU6OkltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBXZWJDb3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUs
IFdlYkNvcmU6OkltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRl
cm4oV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6
Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSA9IFdlYkNvcmU6OkJsZW5kTW9k
ZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBXZWJD
b3JlOjpOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3TGluZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAppbmRleCBkN2EwZTk4Mzk3MThj
MzEwZWExZjI1OWE1YWY0ZTQxYWVlODJjNTFjLi45YWUyYTcyZTkwZjk1YjlhYWE0NjQ4Nzg4YzZm
MjdhMTc3YzhmZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBA
IHZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0
LCBjb25zdCBGaWxsU291cmNlJiBmaWxsCiB9CiAKIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxh
dGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgb3JpZ2luYWxJbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50
YXRpb24sIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZs
b2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRy
YXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJ
V0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNo
YWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIG5hdGl2ZUltYWdlU2l6ZSA9IGJp
dG1hcFNpemUoaW1hZ2UpOwogICAgIENPTVB0cjxJRDJEMUJpdG1hcD4gZGV2aWNlQml0bWFwOwpA
QCAtNzc0LDEwICs3NzQsMTAgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSVdJQ0JpdG1hcCogaW1hZ2UKICAgICAgICAgcmV0
dXJuOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBiaXRtYXBTaXplKGRldmljZUJpdG1hcC5nZXQo
KSk7Ci0gICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgZGV2aWNlQml0bWFwLmdl
dCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxl
bmRNb2RlLCBvcmllbnRhdGlvbiwgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZ2xvYmFsQWxw
aGEsIHNoYWRvd1N0YXRlKTsKKyAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBk
ZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMs
IGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBs
YXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGds
b2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJp
dG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewogICAgIGF1dG8gYml0bWFwU2l6ZSA9IGltYWdlLT5HZXRTaXplKCk7CiAK
QEAgLTgwOSwxNiArODA5LDE2IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4
dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnCiAgICAgaWYgKCFz
aG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAg
ICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdodChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgp
ICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBTdGF0ZTo6c2V0Q29t
cG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5k
TW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQs
IG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAg
ICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMgdGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCku
CiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWRE
ZXN0UmVjdC55KCkpOwogICAgIGNvbnRleHQtPlNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAg
IGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChv
cmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIGNvbmNhdENU
TShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAgIGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhB
c0hlaWdodCgpKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKSB7CisgICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlv
bnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNp
emUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVp
Z2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBp
dCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSByZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9u
IG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2UsIGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2Ug
bGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2UgaXQgYmFjayBoZXJlLgogICAgICAgICAgICAg
YWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0
ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJl
Y3Qud2lkdGgoKSk7CkBAIC04NDIsMTQgKzg0MiwxNCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQ
bGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJpdG1hcCogaW1h
ZwogICAgICAgICBjb250ZXh0LT5TZXRUcmFuc2Zvcm0oY3RtKTsKIH0KIAotdm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFw
KiB0aWxlSW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBkcmF3UGF0dGVy
bihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiB0
aWxlSW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dC5y
ZW5kZXJUYXJnZXQoKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
cGxhdGZvcm1Db250ZXh0KTsKIAogICAgIGNsaXAocGxhdGZvcm1Db250ZXh0LCBkZXN0UmVjdCk7
CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgY29t
cG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0ZU9wZXJh
dGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9u
cy5ibGVuZE1vZGUoKSk7CiAKICAgICBhdXRvIGJpdG1hcEJydXNoUHJvcGVydGllcyA9IEQyRDE6
OkJpdG1hcEJydXNoUHJvcGVydGllcygpOwogICAgIGJpdG1hcEJydXNoUHJvcGVydGllcy5leHRl
bmRNb2RlWCA9IEQyRDFfRVhURU5EX01PREVfV1JBUDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaAppbmRleCAw
NmY2NTYxOGViMjkwN2M4NWUxNGY2MGZjYTYzM2IwODg2OWIyZThhLi5iY2NmNjU2OWQ4OGM1NGEx
M2ZjYWYwNzIyYTkwYjM4ODMxYjhkOTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RpcmVjdDJET3BlcmF0aW9ucy5oCkBAIC0xMjcsMTAg
KzEyNywxMCBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0
IEZsb2F0UmVjdCYpOwogCiB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQm
LCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3Rh
dGUmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRm9udCYsIGRvdWJsZSwgY29uc3QgVmVjdG9y
PHVuc2lnbmVkIHNob3J0PiYgZ2x5cGhzLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBob3Jpem9udGFs
QWR2YW5jZXMsIGNvbnN0IFZlY3RvcjxEV1JJVEVfR0xZUEhfT0ZGU0VUPiYsIGZsb2F0LCBUZXh0
RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7
CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0Jp
dG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Ci12
b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElEMkQxQml0bWFw
KiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24s
IEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKK3ZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiwgSVdJQ0JpdG1hcCosIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwordm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmLCBJRDJE
MUJpdG1hcCosIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYsIGZsb2F0LCBjb25z
dCBTaGFkb3dTdGF0ZSYpOwogdm9pZCBkcmF3UGF0aChQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYs
IGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYpOwot
dm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElXSUNCaXRtYXAqLCBj
b25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUpOwordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIElX
SUNCaXRtYXAqLCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJik7CiAKIHZvaWQgZHJhd1dpdGhvdXRTaGFkb3coUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nUmVjdCwgY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKElEMkQxUmVuZGVyVGFyZ2V0Kik+JiBkcmF3Q29tbWFuZHMpOwogdm9p
ZCBkcmF3V2l0aFNoYWRvdyhQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdSZWN0LCBjb25zdCBTaGFkb3dTdGF0ZSYsIGNvbnN0IFdURjo6RnVuY3Rpb248
dm9pZChJRDJEMVJlbmRlclRhcmdldCopPiYgZHJhd0NvbW1hbmRzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA2YmI2NDRhMmI2NWUyMzRjMTVmZTNjZmZmOWViNzM5
MTk0NGQ0MWMxLi40NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3ZWUzMWUyYjBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw4ICs3MSw4IEBAIHB1Ymxp
YzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRT
aXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURy
YXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxl
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDE0MTE5ZWJmNWEyOWFmNjhjZDU2
ZDlmYjA3MzlkNjljOTY2NTQyMjIuLjkzMjNkYTcyNDhmNmY0OTk4MWU0NTkzODM2ODMyODc5ZGQx
ZGUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9J
bWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VDR1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJ
VE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6ZSkKICAgICBpZiAoc2l6
ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgKnNpemUsIENvbXBv
c2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAw
LjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29w
eSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
Ym1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IENvbXBvc2l0ZUNvcHkg
fSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjZ0NvbnRleHQp
OwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1Nv
dXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdAogICAgICAgICBpZiAo
aW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
cmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90IGN1cnJlbnRG
cmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBpOwot
ICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3Jj
U2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6
Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25l
KTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRlT3AgfSk7CiAg
ICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRy
YXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZs
b2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFs
bGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7
IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAK
aW5kZXggMjRlYzViYzFkOGMyYmI5MjhmYTA1ODU2ZTMzMzQyMmFjNmY1YzhiMi4uNjhiZjM5N2Rl
ZmIxOGVkMDc3OGU4M2Y2NDJjZDlmMmE1ZGY2ZGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcApAQCAtODEsNyAr
ODEsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAgYm1wLCBj
b25zdCBJbnRTaXplKiBzaXplKQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgs
IGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAg
ICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJ
bmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgICAg
IGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8u
Ym1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIAogICAgIC8vIERvIGNsZWFudXAK
ICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBC
aXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYg
Y3R4dCwgY29uc3QgRmxvYXQKICAgICAgICAgaWYgKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hl
aWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0
KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UuZ2V0KCkpID09IHN0
YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAgc2l6ZV90
IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJyZW50RnJh
bWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwg
MC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0
aW9uOjpOb25lKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29tcG9zaXRl
T3AgfSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmIGN0eHQs
IGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBm
b3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6
ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0aXZlSW1h
Z2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTmF0
aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggNGU0ZDg4ZGU0NDQxZmUzZDY1NjdjNmU4YThmMjhh
NTVlODMwNjg3Yi4uYzYwMzg1MWNkNTM1MDY0NTZlY2I3ZjBjOTJhMDQzODA5MmM4MWE5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdl
RGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9O
YXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIENvbG9yIG5hdGl2ZUlt
YWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKICAg
ICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZl
SW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3Jj
U2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUs
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25z
dCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRT
aXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7CiAgICAgYXV0byBw
bGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5tbQppbmRleCAxNDdjMmQwYjViM2ZlOTgx
MTBiMGZjM2FjODFmNmJiZDc2ZmE4YWRkLi41MDI3OTkwY2U1NWU0NjFiMmRkODJiOWMzMjllOWQ5
YTMyZjgwZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0lt
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1Mu
bW0KQEAgLTk2LDcgKzk2LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFn
ZShJbWFnZSogaW1hZ2UsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24KICAgICAgICAgR3Jh
cGhpY3NDb250ZXh0IGNvbnRleHQocmVuZGVyZXJDb250ZXh0LkNHQ29udGV4dCk7CiAgICAgICAg
IGNvbnRleHQudHJhbnNsYXRlKDAsIGltYWdlU2l6ZS5oZWlnaHQpOwogICAgICAgICBjb250ZXh0
LnNjYWxlKHsgYWRqdXN0ZWRJbWFnZVNjYWxlLCAtYWRqdXN0ZWRJbWFnZVNjYWxlIH0pOwotICAg
ICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgSW1hZ2VQYWludGlu
Z09wdGlvbnMob3JpZW50YXRpb24pKTsKKyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdl
LCBGbG9hdFBvaW50KCksIHsgb3JpZW50YXRpb24gfSk7CiAgICAgfV07CiAgICAgcmV0dXJuIGlt
YWdlQ29weS5DR0ltYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggOTAxYzQxMTBlMWM1NmJhNjBhNGRkM2JhN2I5M2Zh
YWY2MDQxY2IzMy4uNzQ4MmNlMDIwYzk0MTBmNTZlYjA2MDRmM2M1M2JmOWIxYmQyNmM4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxs
TGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KIAogICAgICAgICAg
ICAgYXV0byBpbnRlcnBvbGF0aW9uID0gY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHkoY29udGV4
dCwgKmltYWdlLCAmYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAgICAgICAgICAgICBh
dXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZvckltYWdlRHJhdygqaW1hZ2UsIHBhaW50
SW5mbyk7Ci0gICAgICAgICAgICBhdXRvIGRyYXdSZXN1bHQgPSBjb250ZXh0LmRyYXdUaWxlZElt
YWdlKCppbWFnZSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgdG9MYXlvdXRQb2ludChnZW9tZXRyeS5y
ZWxhdGl2ZVBoYXNlKCkpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCBnZW9tZXRyeS5zcGFjZVNpemUo
KSwgSW1hZ2VQYWludGluZ09wdGlvbnMoY29tcG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCks
IGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSwgaW50ZXJwb2xhdGlvbikpOwor
ICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1h
Z2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQ
aGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIHsgY29t
cG9zaXRlT3AsIGJnTGF5ZXIuYmxlbmRNb2RlKCksIGRlY29kaW5nTW9kZSwgaW50ZXJwb2xhdGlv
biB9KTsKICAgICAgICAgICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlk
UmVxdWVzdERlY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJnSW1hZ2UtPmlzQ2Fj
aGVkSW1hZ2UoKSk7CiAgICAgICAgICAgICAgICAgYmdJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+YWRk
Q2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKaW5kZXggOTEzYmI0MTNiOTQy
ZjFlMDYyNmNmNThjMTQ1YWIzMjZiNzFjYzI5Ni4uN2FjMDRiOGJhNGY0MTUxM2IzZmNiYWYxOTMx
YmNmNDQ4MDVjOTQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckVtYmVkZGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXQKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJw
b2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdlLCAmaW1h
Z2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFs
aWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGludGVy
cG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3QsIHsg
aW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiB2b2lkIFJlbmRlckVt
YmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBM
YXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAppbmRleCBmNTFlMmZlYjM3ZTFmY2YwZmQwZTc5MWFlNjRmMDNlZTg4YTJhN2M4Li4z
OTM1Y2I0NWExNGU2ZDc2ODc5YTVkNzE4ZTUwYTQwNWYzOTQ4YTgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ2OSw3ICs0NjksNyBAQCB2b2lkIFJlbmRl
ckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQ
b2ludCYgcGFpbnRPZgogICAgICAgICAgICAgICAgICAgICBjZW50ZXJZID0gMDsKICAgICAgICAg
ICAgICAgICBpbWFnZU9mZnNldCA9IExheW91dFNpemUobGVmdEJvcmRlciArIGxlZnRQYWQgKyBj
ZW50ZXJYICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgsIHRvcEJvcmRlciArIHRvcFBhZCArIGNl
bnRlclkgKyBtaXNzaW5nSW1hZ2VCb3JkZXJXaWR0aCk7CiAKLSAgICAgICAgICAgICAgICBjb250
ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChw
YWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZpY2VTY2FsZUZhY3Rvciks
IGltYWdlT3JpZW50YXRpb24oKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBp
bWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNlU2NhbGVGYWN0b3IpLCB7IGltYWdlT3JpZW50
YXRpb24oKSB9KTsKICAgICAgICAgICAgICAgICBlcnJvclBpY3R1cmVEcmF3biA9IHRydWU7CiAg
ICAgICAgICAgICB9CiAKQEAgLTYzMiw3ICs2MzIsNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVj
dAogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRhdGVGcm9tU2V0dGlu
Z3Moc2V0dGluZ3MoKSk7CiAKICAgICBhdXRvIGRlY29kaW5nTW9kZSA9IGRlY29kaW5nTW9kZUZv
ckltYWdlRHJhdygqaW1hZ2UsIHBhaW50SW5mbyk7Ci0gICAgYXV0byBkcmF3UmVzdWx0ID0gcGFp
bnRJbmZvLmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltZywgcmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMoY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGlt
YWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGF1dG8gZHJhd1Jlc3VsdCA9
IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIHsgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIGltYWdlT3JpZW50YXRpb24o
KSwgaW50ZXJwb2xhdGlvbiB9KTsKICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1
bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAgICAgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZElt
YWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAK
aW5kZXggMGRmZTI4Mjc2NGY0MDhiNjIwYmVmNWQ5ZjU4ZTg4YTZjYzc2YzA4NC4uNGZlODU4NjI1
YzkyOWQ4MGJlY2FmZWE2NmYwNjRlMzQyMTgxMjVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC0xNDUsNyArMTQ1
LDcgQEAgdm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFwc2hvdChQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFs
aXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29u
dGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
aW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1h
Z2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRp
b24gfSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0
Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA0
NGNiMjAwMWMwYmU4YWI0Mjc3NmY1NTc1NmUxNDQwMzc1YzAxN2JhLi5hNDJjZTZlYzJkNjkzOWMw
MDE2MWYxNzliZTI2NDRlMTI0MjkyNDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRl
cmVyLAogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVjdC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBs
dWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250
ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3Vy
Y2VPdmVyKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5S
ZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCmluZGV4IDVjNTZiNjk5OTViYzkyZjRjYTg4MWUyYjkxZTlmMzdmZjVjMzhm
NTIuLjAwYWJjMGQxMjczYjBmZWNlMDEzNzdlZTliOThjYWM3ZDVmODZlZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIEludFNp
emUgU1ZHSW1hZ2U6OmNvbnRhaW5lclNpemUoKSBjb25zdAogfQogCiBJbWFnZURyYXdSZXN1bHQg
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJM
JiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yMDIsNyArMjAyLDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXQKIAogICAgIGZyYW1lVmlldygpLT5zY3JvbGxUb0ZyYWdt
ZW50KGluaXRpYWxGcmFnbWVudFVSTCk7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0g
ZHJhdyhjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmMsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUs
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAg
IEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNy
Yywgb3B0aW9ucyk7CiAKICAgICBzZXRJbWFnZU9ic2VydmVyKG9ic2VydmVyKTsKICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtMjIxLDcgKzIyMSw3IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpu
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZShjb25zdCBHcmFwaGljc0NvbnRleHQqKQogICAgIGlm
ICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0
KCksIHJlY3QoKSwgcmVjdCgpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ug
c2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXIt
PmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KTsKQEAgLTI0NywxNCArMjQ3LDE0IEBAIE5hdGl2ZUltYWdlUHRyIFNWR0ltYWdlOjpuYXRpdmVJ
bWFnZShjb25zdCBHcmFwaGljc0NvbnRleHQqIHRhcmdldENvbnRleHQpCiAgICAgUGxhdGZvcm1D
b250ZXh0RGlyZWN0MkQgcGxhdGZvcm1Db250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsK
ICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQsIEdyYXBo
aWNzQ29udGV4dDo6Qml0bWFwUmVuZGVyaW5nQ29udGV4dFR5cGU6OkdQVU1lbW9yeSk7CiAKLSAg
ICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGxvY2FsQ29udGV4dCwgcmVjdCgpLCByZWN0KCkpOwog
CiAgICAgcmV0dXJuIG5hdGl2ZUltYWdlOwogfQogI2VuZGlmCiAKIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGlu
aXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3As
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IHpv
b21lZENvbnRhaW5lclJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluZXJTaXpl
KTsKICAgICB6b29tZWRDb250YWluZXJSZWN0LnNjYWxlKGNvbnRhaW5lclpvb20pOwpAQCAtMjcx
LDcgKzI3MSw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VT
UkdCLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1
ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250
ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwg
aW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVy
LCBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRl
eHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBp
bWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwogICAgIGlmIChjb250ZXh0LmRy
YXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFz
aygpOwogCkBAIC0yODYsMTAgKzI4NiwxMCBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZv
ckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAg
IHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5zY2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0
aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKICAgICBjb250ZXh0LnNldERy
YXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwg
ZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5zY2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwg
c3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9y
bSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikK
K0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTI5OCwxMSArMjk4
LDExIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjCiAgICAgQVNTRVJUKHZpZXcpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNv
bnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgY29udGV4dC5jbGlwKGVuY2xvc2luZ0ludFJlY3Qo
ZHN0UmVjdCkpOwogCiAgICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LmFscGhhKCk7Ci0gICAgYm9v
bCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBD
b21wb3NpdGVTb3VyY2VPdmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBh
bHBoYSA8IDE7CisgICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIg
PSBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBv
cHRpb25zLmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsKICAg
ICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyKSB7CiAgICAgICAgIGNv
bnRleHQuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihhbHBoYSk7CiAgICAgICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFs
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggMDc1NDI0ZmM3NWRi
ZGUwOTkxNzBmZjNmNmViYTZlNmM3MWZkMmUxNS4uNjE0NTg1MzQwM2I0NzdhZWM3MTFjOGRkNjJm
ODgzNjU0OTllMDJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKQEAg
LTk0LDEwICs5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKIAogICAgIGV4cGxpY2l0IFNWR0ltYWdlKEltYWdlT2JzZXJ2ZXImKTsKLSAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGZyb21S
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRvUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKLSAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUg
Y29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJh
Z21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJu
Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVy
U2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkws
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywKLSAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSk7CisgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5l
clpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29udGFpbmVyWm9v
bSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KTsKIAogICAgIFJlZlB0cjxTVkdTVkdFbGVtZW50PiByb290RWxlbWVu
dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VGb3JDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmNwcAppbmRleCBjZjhjYzNlNWNlYzhlODEyZGU2OWE5ZjQ0YWRiYjdi
MDVjNTVjMDA1Li5kNzBhNjQwYzZhMDQ5MWU3ZTE2N2Y5NGMxODBlMjc5MWEzMWVhYzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5jcHAKQEAgLTM0LDE2ICszNCwxNSBAQCBGbG9hdFNpemUgU1ZHSW1hZ2VGb3JDb250YWluZXI6
OnNpemUoKSBjb25zdAogICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNpemUoc2NhbGVk
Q29udGFpbmVyU2l6ZSkpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWlu
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0
aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAg
IHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVj
dCwgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JD
b250YWluZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5p
dGlhbEZyYWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBT
VkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQogewotICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRl
eHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVS
TCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9w
LCBkc3RSZWN0LCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxG
cmFnbWVudFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRz
dFJlY3QsIG9wdGlvbnMpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5l
cjo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJn
ZXRDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlRm9yQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuaAppbmRleCA4NjlkMDk3MWM1YjJmZTVkNDk1MWRkNjAzNDBhZTM2M2NmNzc2
ZjA0Li41N2IyMDRkOTgzZmIwN2IxYTdlZDYxYTFhZmViNGViN2Y4YWEwZDQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaApAQCAt
NTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlv
KTsKICAgICB9CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pIGZpbmFsOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CiAK
LSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9p
bnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5h
bDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIGZpbmFsOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29u
c2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTUyZWYxYThmZTJkNTU1NjQzYWU5NWM1
NDVhNjA1Y2Y3NWE3YjM1Yy4uZDFmZWZjNmU4M2Q2MTMxM2IxYmNjMWMzYTE3ZTQ2MzFhMDY0ODlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTI2MTgsNyArMjYxOCw3IEBAIHN0YXRpYyB2b2lkIGltYWdlUG9zaXRpb25J
bmZvcm1hdGlvbihXZWJQYWdlJiBwYWdlLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBJbnRlCiAg
ICAgaWYgKCFncmFwaGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lk
dGgoKSwgYml0bWFwU2l6ZS5oZWlnaHQoKSksIHJlbmRlckltYWdlLmltYWdlT3JpZW50YXRpb24o
KSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwg
MCwgYml0bWFwU2l6ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgeyByZW5kZXJJbWFn
ZS5pbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377357</attachid>
            <date>2019-08-27 11:20:24 -0700</date>
            <delta_ts>2019-08-28 11:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190827112024.patch</filename>
            <type>text/plain</type>
            <size>167724</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3NzY2YmNjYTI4OWMz
OWQyODhmYTkyOWI4NzkzYjU2NTBjMWJiMS4uNmJhZDU5ZTYxNzM1MDVjYWE5OGE5ZjJiYTA5OWRl
NjkzYzA4ZWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0wOC0yNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBp
bWFnZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIElt
YWdlUGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoOgorICAgICAgICAtLSBBbGwgdGhlIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb24gd2lsbCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUKKyAgICAgICAgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMgaW5zdGVhZCBvZiBwYXNzaW5nIGluZGl2aWR1YWwgb3B0aW9ucy4K
KworICAgICAgICAtLSBJbWFnZVBhaW50aW5nT3B0aW9ucyBpcyBtYWRlIGxpa2UgYSBzZXQgb2Yg
b3B0aW9ucy4gSXQgY2FuIGJlCisgICAgICAgICAgIGluaXRpYWxpemVkIHdpdGggYW55IG51bWJl
ciBvZiBvcHRpb25zIGFuZCB0aGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisKKyAgICAgICAgLS0g
SW1hZ2U6Om9yaWdpbmFsU2l6ZSgpIGlzIGRlbGV0ZWQgYmVjYXVzZSBpdCByZXR1cm5zIHNpemUo
KSBhbmQgbm9uZQorICAgICAgICAgICBvZiB0aGUgSW1hZ2UgY29uY3JldGUgY2xhc3NlcyBvdmVy
cmlkZXMgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZUZyb21CdWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJh
d0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdJbWFnZVRvQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpmdWxsQ2FudmFzQ29tcG9z
aXRlZERyYXdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdDcm9zc2ZhZGVTdWJp
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6
CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21QYWludEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9DdXN0b21QYWludEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2Vu
ZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZEltYWdlOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFkaWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6
OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpJ
bWFnZVBhaW50aW5nT3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBh
aW50aW5nT3B0aW9uczo6dXNlc0RlZmF1bHRJbnRlcnBvbGF0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdJbWFnZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6
Om9yaWdpbmFsU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQYWludGluZ09wdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmNvbXBvc2l0ZU9wZXJhdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpibGVuZE1vZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmRlY29kaW5nTW9kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6b3JpZW50YXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6OmludGVy
cG9sYXRpb25RdWFsaXR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdP
cHRpb25zOjpzZXRPcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1h
Z2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dMYXllckJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZHJhd1NoYWRvd0ltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhaXJvOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmRy
YXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFRvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQ
YXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0
aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjphcHBseSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6YXBwbHkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6
CisgICAgICAgIChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJl
Y3QyRE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXJlY3QyRDo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwSW1hZ2U6OmdldEhCSVRNQVBPZlNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvRHJhZ0ltYWdl
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRTbmFwc2hvdEltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1h
Z2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50
SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6cGFpbnRTbmFw
c2hvdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U25hcHNob3R0ZWRQbHVnaW5PdmVybGF5KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW1hZ2U6OmRyYXdGb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
OjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZUZvckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRh
aW5lcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUZvckNvbnRhaW5lcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5o
OgorCiAyMDE5LTA4LTI3ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAg
ICAgd2Via2l0cHJlc2VudGF0aW9ubW9kZWNoYW5nZWQgaXMgZmlyZWQgdHdpY2Ugd2hlbiBleGl0
aW5nIHBpY3R1cmUgaW4gcGljdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmMTlkZjMwYzYyOTdiMmIzNzQ4OWRl
ZTQzZjRjM2ZlMDgwM2IwZmFkLi44YjVkYTk1ZWU4ODY0YjhlZWVlZTAzODQ5NTQxNmMzZWJhMzMz
ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTI3ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsIGltYWdlIGRyYXdp
bmcgZnVuY3Rpb25zIHNob3VsZCB0YWtlIGFuIGFyZ3VtZW50IG9mIHR5cGUgSW1hZ2VQYWludGlu
Z09wdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMTA1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2VzIGFuIEltYWdlUGFpbnRpbmdP
cHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24pOgorCiAyMDE5LTA4
LTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBEbyBub3QgY2xlYXIgdGhlIHBlbmRpbmcgYXBpIHJlcXVlc3Qgd2hlbiB0aGVyZSdzIG5vIG5h
dmlnYXRpb24gSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDVkOTYxNmE0NTYyNmY1NTZjMDAxNmUy
YTM0MjRkNGY0ZTkwNDI0NjIuLmJlODU2NGVhODcyYzIxYzIxM2JhOWIxZDJhYzJmYmQwYTRiYTQy
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTA2NCw2ICsxMDY0LDcgQEAgc2V0KFdlYkNvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
UGFpbnRpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODhhNmI4YzVkYTdjYjlhNjc1YjE3NmYwOGQy
Mjk4ZTE3MTdkYTlhZS4uNWVlMWZhNTg0YWZkMmYyYWQ2OWQ3MDliZDMwM2UyM2Y0ZWViMmUxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMjA4NCw2ICsyMDg0LDcgQEAKIAkJNzIxNDQzMzIyMjNFQzg1RjAwRjEyRkY3IC8qIChu
dWxsKSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjE0NDMzMzIyM0VDOEIwMDBGMTJGRjcg
LyogU1ZHUHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1RUU1MzYzMjIzQjJBMjQwMEZCQTk0NCAvKiBTVkdQcm9wZXJ0eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyMTQ0MzM0MjIzRUM5
MTYwMEYxMkZGNyAvKiBTVkdQcm9wZXJ0eU93bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MDIyM0IyQTIxMDBGQkE5NDQgLyogU1ZHUHJv
cGVydHlPd25lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJDMThBM0Yy
MzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI0RUQzMzIxQTNBOEIyMzAwRjVG
MTNDIC8qIEpTRVhUQmxlbmRNaW5NYXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyNEVEMzMwMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWlu
TWF4LmggKi87IH07CiAJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0
RTFEQzdGMjVCMDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVFNTUxMURDODBEODQwMEE5MUZGQiAv
KiBBY3Rpdml0eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEVFNTRGMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0
eVN0YXRlQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtOTQxOCw2ICs5NDE5LDcgQEAKIAkJNzI3QUZFRDExQTJFQTZBMDAw
MDQ0MkU4IC8qIEVYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyN0FGRUQyMUEy
RUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEVYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI3QUZFRDMxQTJF
QTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNS
R0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MkMxOEEzRjIzMEIwNEI3MDA2
ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjExQTJF
OEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkYxQUQ5RjFBMzkwNEMzMDAwMTRFMTggLyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNDU1Niw2ICsyNDU1OCw3IEBACiAJCQkJNTU3NkE1NjMxRDg4
QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLywKIAkJCQlCQzdGNDRBNzBCOUUzMjRFMDBB
OUQwODEgLyogSW1hZ2VPYnNlcnZlci5oICovLAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0
MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCisJCQkJNzJDMThBM0YyMzBCMDRCNzAwNjg0N0M3
IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1
M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCTU1NDY3NTc3MUZEMUZDMUEwMDNC
MTBCMCAvKiBJbWFnZVNvdXJjZS5jcHAgKi8sCiAJCQkJNTU0Njc1NzgxRkQxRkMxQTAwM0IxMEIw
IC8qIEltYWdlU291cmNlLmggKi8sCkBAIC0yOTU3NSw2ICsyOTU3OCw3IEBACiAJCQkJMDg5NTgy
NTYwRTg1N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzdGNDRBODBCOUUzMjRFMDBBOUQwODEgLyogSW1hZ2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ1QTU5MzExNTI1MjVEMDAwMzZFRTUxIC8qIEltYWdlT3JpZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcyMjgzRjBFMjMwQjI2OEMwMEY1RDgyOCAvKiBJbWFnZVBhaW50aW5n
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjUxQTJGM0YxN0Q3RDNBRTAwNzI1MTdBIC8q
IEltYWdlUXVhbGl0eUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MjkxRTRCMTM0
MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4g
SGVhZGVycyAqLywKQEAgLTMwNjA0LDYgKzMwNjA4LDcgQEAKIAkJCQk4NDczMEQ5MTEyNDhGMEIz
MDBEM0E5QzkgLyogTGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTY1MEQw
MEJGMjIwMDcxQjc4MiAvKiBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlvdXRJbnRl
cmZhY2VUZXh0Qm94ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAwMDUx
NDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGREJDMDQ3MTgz
RDI3QjcwMDQwNzEwOSAvKiBMaW5lV2lkdGguaCBpbiBIZWFkZXJzICovLAogCQkJCUNCQTlEQzBC
MURGNDRERjQwMDA1Njc1QyAvKiBMaW5rSGVhZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMxOTIy
LDcgKzMxOTI3LDYgQEAKIAkJCQlCMkMzREEzRTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVj
TGF0aW4xLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0VGNUU2MDFEMjBDODM5MDAxNzFFNjAgLyog
VGV4dENvZGVjUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQwMEQwMDZD
MUQwMEVGNkYyNiAvKiBUZXh0Q29kZWNVc2VyRGVmaW5lZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RTQ4NEEzM0UyMzA1NTMyNTAwOUFERTZBIC8qIExpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTQyMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29k
ZWNVVEYxNi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0M0NCODIxMkYyNUU1MTAwMzNDNUVFIC8q
IFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkI5N0NBMTMxMzg5NDMwMDhC
RUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmNwcAppbmRleCA2MzFmYWU3MmIxMDMxYTY1MjA0ZTc5ZmNiYTVj
MzZjNmQ5YjA5MDUzLi42YjBjN2EzZDY3Y2RjN2E1YmI1ZGUyOTg0Y2QyYmE1NWRmMzAyNzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcApAQCAtMzIzLDEwICszMjMsNyBAQCB2b2lk
IEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQ
dHI8SFRNTEltYWdlRWxlbWVudAogICAgIH0KIAogICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9h
dFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5n
T3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkp
OwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIs
IGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5n
T3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JS
ZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0
eSkgfSk7CiAKICAgICAvLyA3LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAg
IGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CkBAIC0zNzMs
MTAgKzM3MCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVuCiAgICAgfQogCiAgICAgRmxvYXRS
ZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9s
YXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlv
bnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdl
KCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJh
d0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0
aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsKIAogICAgIC8vIDMuIENyZWF0ZSBhIG5ldyBJbWFnZUJp
dG1hcCBvYmplY3QuCiAgICAgYXV0byBpbWFnZUJpdG1hcCA9IGNyZWF0ZShXVEZNb3ZlKGJpdG1h
cERhdGEpKTsKQEAgLTQ4NCwxMCArNDc4LDcgQEAgdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPEltYWdlQml0bWFwPiYgZXgKICAg
ICBhdXRvIGltYWdlRm9yUmVuZGVyID0gZXhpc3RpbmdJbWFnZUJpdG1hcC0+YnVmZmVyKCktPmNv
cHlJbWFnZSgpOwogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0UG9pbnQoKSwgb3V0cHV0
U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zOwotICAgIHBh
aW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxp
dHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7Ci0KLSAgICBiaXRtYXBE
YXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3QsIHNvdXJj
ZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBi
aXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZUZvclJlbmRlciwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsKIAogICAgIC8v
IDMuIENyZWF0ZSBhIG5ldyBJbWFnZUJpdG1hcCBvYmplY3QuCiAgICAgYXV0byBpbWFnZUJpdG1h
cCA9IGNyZWF0ZShXVEZNb3ZlKGJpdG1hcERhdGEpKTsKQEAgLTY1MSwxMCArNjQyLDcgQEAgdm9p
ZCBJbWFnZUJpdG1hcDo6Y3JlYXRlRnJvbUJ1ZmZlcigKICAgICB9CiAKICAgICBGbG9hdFJlY3Qg
ZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRwdXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAgcGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlv
blF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5y
ZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmlt
YWdlLCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWlu
dGluZ09wdGlvbnMpOworICAgIGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdl
LCBkZXN0UmVjdCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpIH0p
OwogCiAgICAgYXV0byBpbWFnZUJpdG1hcCA9IGNyZWF0ZShXVEZNb3ZlKGJpdG1hcERhdGEpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA1M2M5YzU2NjA0MjdjNDg2ZTMyYWJjMGMyZDY1
NGNjYzU2YzAyOGEzLi45ZWI5NDdkZjE4MDU1NjU4ZGE0NjdkMmNmMzMyZTEwNzYyYmU0ZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTU3NCwxNyArMTU3NCwxNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoRG9jdW1lbnQm
IGRvY3VtZW50LCBDYQogICAgICAgICBkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKS51cGRh
dGVGcm9tU2V0dGluZ3MoZG9jdW1lbnQuc2V0dGluZ3MoKSk7CiAKICAgICBpZiAocmVjdENvbnRh
aW5zQ2FudmFzKG5vcm1hbGl6ZWREc3RSZWN0KSkgewotICAgICAgICBjLT5kcmF3SW1hZ2UoKmlt
YWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIEltYWdlUGFpbnRpbmdP
cHRpb25zKG9wLCBibGVuZE1vZGUpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9y
bWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCB7IG9wLCBibGVuZE1vZGUgfSk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKGlzRnVsbENhbnZh
c0NvbXBvc2l0ZU1vZGUob3ApKSB7CiAgICAgICAgIGZ1bGxDYW52YXNDb21wb3NpdGVkRHJhd0lt
YWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBvcCk7CiAg
ICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2UgaWYgKG9wID09IENvbXBv
c2l0ZUNvcHkpIHsKICAgICAgICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdl
KCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2Us
IG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0p
OwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
Yy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3QsIG5vcm1hbGl6ZWRTcmNSZWN0
LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7CisgICAgICAgIGMtPmRyYXdJ
bWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgeyBvcCwg
YmxlbmRNb2RlIH0pOwogICAgICAgICBkaWREcmF3KG5vcm1hbGl6ZWREc3RSZWN0KTsKICAgICB9
CiAgICAgCkBAIC0xNjMyLDcgKzE2MzIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQmIHNvdQogI2Vu
ZGlmCiAKICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9z
aXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0Nv
bXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9i
YWxDb21wb3NpdGUpOwpAQCAtMTY0MSwxNSArMTY0MSwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2UoSFRNTENhbnZhc0VsZW1lbnQm
IHNvdQogICAgICAgICBpZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7CiAgICAg
ICAgICAgICBpZiAoYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3Qs
IENvbG9yU3BhY2VTUkdCLCAqYykpIHsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwot
ICAgICAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0s
IHNyY1JlY3Quc2l6ZSgpIH0sIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29t
cG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgICAgICAgICAgYy0+ZHJhd0lt
YWdlQnVmZmVyKCpjb3B5LCBkc3RSZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgeyBzdGF0
ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAg
ICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQ
YWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxl
bmQpKTsKKyAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBz
cmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0p
OwogICAgICAgICB9CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwg
SW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xv
YmFsQmxlbmQpKTsKKyAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3Qs
IHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQg
fSk7CiAgICAgICAgIGRpZERyYXcoZHN0UmVjdCk7CiAgICAgfQogCkBAIC0xNzMwLDE3ICsxNzMw
LDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRy
YXdJbWFnZShJbWFnZUJpdG1hcCYgaW1hZ2VCaXRtCiAgICAgY2hlY2tPcmlnaW4oJmltYWdlQml0
bWFwKTsKIAogICAgIGlmIChyZWN0Q29udGFpbnNDYW52YXMoZHN0UmVjdCkpIHsKLSAgICAgICAg
Yy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRp
bmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7
CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7
IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwogICAgICAg
ICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21w
b3NpdGVNb2RlKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlKSkgewogICAgICAgICBmdWxsQ2FudmFz
Q29tcG9zaXRlZERyYXdJbWFnZSgqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSk7CiAgICAgICAgIGRpZERyYXdFbnRpcmVDYW52YXMoKTsKICAgICB9IGVs
c2UgaWYgKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpIHsKICAgICAg
ICAgY2xlYXJDYW52YXMoKTsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRz
dFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9z
aXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigq
YnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kIH0pOwogICAgICAgICBkaWREcmF3RW50aXJlQ2FudmFzKCk7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIsIGRzdFJlY3QsIHNy
Y1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0
ZSgpLmdsb2JhbEJsZW5kKSk7CisgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBk
c3RSZWN0LCBzcmNSZWN0LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2Jh
bEJsZW5kIH0pOwogICAgICAgICBkaWREcmF3KGRzdFJlY3QpOwogICAgIH0KIApAQCAtMTgyOSwx
NCArMTgyOSwxNCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNvbXBvc2l0
ZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgYnVmZmVyLCBjb25zdCBJbgogICAgIGMtPnJlc3RvcmUoKTsK
IH0KIAotc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29u
dGV4dChJbWFnZSYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0LCBjb25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyYywg
b3ApOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwog
fQogCi1zdGF0aWMgdm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXImIGltYWdlQnVm
ZmVyLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJh
d0ltYWdlVG9Db250ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdJ
bWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBvcCk7CisgICAgY29udGV4dC5kcmF3
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3B0aW9ucyk7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIFQ+IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZh
c0NvbXBvc2l0ZWREcmF3SW1hZ2UoVCYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQpAQCAtMTg2NSw3ICsxODY1
LDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWEKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFu
c2xhdGUoLXRyYW5zZm9ybWVkQWRqdXN0ZWRSZWN0LmxvY2F0aW9uKCkpOwogICAgIGJ1ZmZlci0+
Y29udGV4dCgpLnRyYW5zbGF0ZShjcm9wcGVkT2Zmc2V0KTsKICAgICBidWZmZXItPmNvbnRleHQo
KS5jb25jYXRDVE0oZWZmZWN0aXZlVHJhbnNmb3JtKTsKLSAgICBkcmF3SW1hZ2VUb0NvbnRleHQo
aW1hZ2UsIGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgQ29tcG9zaXRlU291
cmNlT3Zlcik7CisgICAgZHJhd0ltYWdlVG9Db250ZXh0KGltYWdlLCBidWZmZXItPmNvbnRleHQo
KSwgYWRqdXN0ZWREZXN0LCBzcmMsIHsgQ29tcG9zaXRlU291cmNlT3ZlciB9KTsKIAogICAgIGNv
bXBvc2l0ZUJ1ZmZlcigqYnVmZmVyLCBidWZmZXJSZWN0LCBvcCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKaW5kZXggYjJiZDQ3Y2Ix
NjE0Y2RhZTVkODllZWExN2I0MmM0Nzg2YmMyZDliMS4uNjI2NTA0MDc4Yjc5MDM3Yzg4YzJlNWQw
NzhhMGUxYWY4YjE1ZjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIEVuY29kZWREYXRhU3RhdHVz
IEJpdG1hcEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQ7CiAgICAg
cmV0dXJuIG1fc291cmNlLT5kYXRhQ2hhbmdlZChkYXRhKCksIGFsbERhdGFSZWNlaXZlZCk7CiB9
Ci0gICAgCisKIHZvaWQgQml0bWFwSW1hZ2U6OnNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVz
SWZOZWNlc3NhcnkoRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgLy8gV2hl
biBuZXcgZGF0YSBpcyByZWNlaXZlZCwgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyBpcyBz
ZXQgdG8gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEJp
dG1hcEltYWdlOjpub3RTb2xpZENvbG9yKCkKIH0KICNlbmRpZgogCi1JbWFnZURyYXdSZXN1bHQg
Qml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgbW9kZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgaWYgKGRlc3RSZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTE5Niw3ICsxOTYs
NyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIExPRyhJbWFnZXMsICJCaXRtYXBJbWFn
ZTo6JXMgLSAlcCAtIHVybDogJXMgW3N1YnNhbXBsaW5nTGV2ZWwgPSAlZCBzY2FsZUZhY3RvckZv
ckRyYXdpbmcgPSAoJS40ZiwgJS40ZildIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VVUkwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFN1YnNh
bXBsaW5nTGV2ZWwpLCBzY2FsZUZhY3RvckZvckRyYXdpbmcud2lkdGgoKSwgc2NhbGVGYWN0b3JG
b3JEcmF3aW5nLmhlaWdodCgpKTsKIAogICAgIE5hdGl2ZUltYWdlUHRyIGltYWdlOwotICAgIGlm
IChkZWNvZGluZ01vZGUgPT0gRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXMpIHsKKyAgICBpZiAo
b3B0aW9ucy5kZWNvZGluZ01vZGUoKSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgewog
ICAgICAgICBBU1NFUlQoIWNhbkFuaW1hdGUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50
RnJhbWUgfHwgbV9hbmltYXRpb25GaW5pc2hlZCk7CiAKQEAgLTIxNiw3ICsyMTYsNyBAQCBJbWFn
ZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlcwogCiAgICAgICAgIGlmICghZnJhbWVIYXNEZWNvZGVkTmF0aXZl
SW1hZ2VDb21wYXRpYmxlV2l0aE9wdGlvbnNBdEluZGV4KG1fY3VycmVudEZyYW1lLCBtX2N1cnJl
bnRTdWJzYW1wbGluZ0xldmVsLCBEZWNvZGluZ09wdGlvbnMoRGVjb2RpbmdNb2RlOjpBc3luY2hy
b25vdXMpKSkgewogICAgICAgICAgICAgaWYgKG1fc2hvd0RlYnVnQmFja2dyb3VuZCkKLSAgICAg
ICAgICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENv
bG9yOjp5ZWxsb3cpLmNvbG9yV2l0aEFscGhhKDAuNSksIG9wKTsKKyAgICAgICAgICAgICAgICBm
aWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJlY3QsIENvbG9yKENvbG9yOjp5ZWxsb3cp
LmNvbG9yV2l0aEFscGhhKDAuNSksIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgICAgICBBU1NFUlRfSU1QTElFUyhzdGF0dXMgPT0g
U3RhcnRBbmltYXRpb25TdGF0dXM6OkRlY29kaW5nQWN0aXZlLCAoIW1fY3VycmVudEZyYW1lICYm
ICFtX3JlcGV0aXRpb25zQ29tcGxldGUpIHx8IGZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0
SW5kZXgobV9jdXJyZW50RnJhbWUsIG1fY3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpKTsKIAogICAg
ICAgICBpZiAoc3RhdHVzID09IFN0YXJ0QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSAm
JiBtX3Nob3dEZWJ1Z0JhY2tncm91bmQpIHsKLSAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xv
cihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEo
MC41KSwgb3ApOworICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RS
ZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNv
bXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTI0NSw3ICsyNDUsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwog
ICAgICAgICB9IGVsc2UgaWYgKGZyYW1lSXNCZWluZ0RlY29kZWQpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBpbnN0ZWFkIG9mIHNob3dpbmcgdGhlIHllbGxvdyByZWN0YW5nbGUgYW5kIHJldHVy
bmluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoaXMgZnJhbWUgdG8gZmluaXNoIGRlY29kaW5nLgog
ICAgICAgICAgICAgaWYgKG1fc2hvd0RlYnVnQmFja2dyb3VuZCkgewotICAgICAgICAgICAgICAg
IGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxv
dykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOworICAgICAgICAgICAgICAgIGZpbGxXaXRoU29s
aWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29sb3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRo
QWxwaGEoMC41KSwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAgICAgICAgICAg
ICBMT0coSW1hZ2VzLCAiQml0bWFwSW1hZ2U6OiVzIC0gJXAgLSB1cmw6ICVzIFt3YWl0aW5nIGZv
ciBhc3luYyBkZWNvZGluZyB0byBmaW5pc2hdIiwgX19GVU5DVElPTl9fLCB0aGlzLCBzb3VyY2VV
UkwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZzsKQEAgLTI2NCwxNCAr
MjY0LDE1IEBAIEltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzCiAgICAgQVNTRVJUKGltYWdlKTsKICAg
ICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIGlmIChjb2xvci5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0
LCBjb2xvciwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY29udGV4dCwgZGVzdFJl
Y3QsIGNvbG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIGlmIChvcmllbnRhdGlvbiA9PSBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UpCi0gICAgICAgIG9yaWVudGF0aW9uID0gZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgobV9jdXJyZW50RnJhbWUpOworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkgPT0gSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKQorICAgICAgICBkcmF3TmF0aXZlSW1hZ2UoaW1hZ2Us
IGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIHsgb3B0aW9ucywg
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgobV9jdXJyZW50RnJhbWUpIH0pOworICAgIGVsc2UKKyAg
ICAgICAgZHJhd05hdGl2ZUltYWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
SW50U2l6ZShzaXplKCkpLCBvcHRpb25zKTsKIAotICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
Y29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3AsIG1vZGUsIG9y
aWVudGF0aW9uKTsKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJhbWVEZWNv
ZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUpOwogCiAgICAgaWYgKGltYWdlT2JzZXJ2
ZXIoKSkKQEAgLTI4MCw3ICsyODEsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlcwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDcgKzI5MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwKICAgICAgICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2Rp
bmdTdGF0dXM6OkludmFsaWQpCiAgICAgICAgICAgICBtX3NvdXJjZS0+ZGVzdHJveUluY29tcGxl
dGVEZWNvZGVkRGF0YSgpOwogICAgICAgICAKLSAgICAgICAgSW1hZ2U6OmRyYXdQYXR0ZXJuKGN0
eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJs
ZW5kTW9kZSk7CisgICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICBtX2N1
cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9j
dXJyZW50RnJhbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA1LDcgKzMwNiw3IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKICAgICAgICAgLy8gVGVtcG9yYXJpbHkgcmVzZXQgaW1h
Z2Ugb2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgY2hhbmdlSW5SZWN0KCkg
Y2FsbHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAgICAgIHNldEltYWdlT2JzZXJ2ZXIobnVs
bHB0cik7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3QsIHRpbGVS
ZWN0LCBvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKTsKKyAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3Qs
IHRpbGVSZWN0LCB7IG9wdGlvbnMsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3Jp
ZW50YXRpb246Ok5vbmUgfSk7CiAKICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZlcik7
CiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwpAQCAtMzE2LDcgKzMx
Nyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKICAgICB9CiAKICAgICBjdHh0LnNldERyYXdM
dW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBtX2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihjdHh0
LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVu
ZE1vZGUpOworICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKIGJvb2wg
Qml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNWFlZjYxZDdlODk5YmRjZjVjNGQ0
NDVhYWJjODhiNjhmMWYwNGFkNS4uMzIwMmZiZTMwNGVjZmVhNmZmYzhmZWI1Mjc2YjYwYzJiODU4
ZTM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCkBAIC0xNjEsOCArMTYxLDggQEAgcHJvdGVjdGVkOgogICAgIC8vIHxkZXN0cm95QWxsfCBh
bG9uZy4KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJv
eUFsbCA9IHRydWUpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRl
OwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6
ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNp
emUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCmluZGV4IGVhNjRiMWQ5NDg5YjEwMzU3MmQwYzY5Njg5YmRkYTM0MGFj
NjczM2YuLmQ0YmRiNWYyMGFhNGFkMmE1NzM2NWEzODZjMjYwMmNkMzkzYWU2MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTUwLDIwICs1MCwyMSBAQCBzdGF0aWMgdm9pZCBkcmF3Q3Jv
c3NmYWRlU3ViaW1hZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIENv
bXBvcwogICAgIGJvb2wgdXNlVHJhbnNwYXJlbmN5TGF5ZXIgPSBpbWFnZS5pc1NWR0ltYWdlKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0g
ICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0b3IgZHJhd0ltYWdlT3BlcmF0aW9uID0gb3BlcmF0aW9u
OworCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMgb3B0aW9uczsKIAogICAgIGlmICh1c2VUcmFu
c3BhcmVuY3lMYXllcikgewogICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihv
cGVyYXRpb24pOwogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0
eSk7Ci0gICAgICAgIGRyYXdJbWFnZU9wZXJhdGlvbiA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0g
ICAgfSBlbHNlCisgICAgfSBlbHNlIHsKICAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5
KTsKKyAgICAgICAgb3B0aW9ucyA9IHsgb3BlcmF0aW9uIH07CisgICAgfQogCiAgICAgaWYgKHRh
cmdldFNpemUgIT0gaW1hZ2VTaXplKQogICAgICAgICBjb250ZXh0LnNjYWxlKHRhcmdldFNpemUg
LyBpbWFnZVNpemUpOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKGRyYXdJbWFnZU9wZXJhdGlvbikpOworICAgIGNvbnRleHQu
ZHJhd0ltYWdlKGltYWdlLCBJbnRQb2ludCgpLCBvcHRpb25zKTsKIAogICAgIGlmICh1c2VUcmFu
c3BhcmVuY3lMYXllcikKICAgICAgICAgY29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwpA
QCAtODYsMTAgKzg3LDEwIEBAIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9z
c2ZhZGUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIGNvbnRleHQuZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
LCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJ
bWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgIGNvbnRleHQu
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0
aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgY29udGV4dC5jbGlwKGRzdFJlY3QpOwogICAgIGNvbnRl
eHQudHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24oKSk7CiAgICAgaWYgKGRzdFJlY3Quc2l6ZSgp
ICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtMTAwLDcgKzEwMSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsCiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotdm9pZCBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKQEAgLTExMSw3ICsxMTIsNyBAQCB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UgogICAg
IGRyYXdDcm9zc2ZhZGUoZ3JhcGhpY3NDb250ZXh0KTsKIAogICAgIC8vIFRpbGUgdGhlIGltYWdl
IGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgotICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
ZywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJu
KGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFj
aW5nLCBvcHRpb25zKTsKIH0KIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHVtcChU
ZXh0U3RyZWFtJiB0cykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDIxZTEzMjM1MTg1
YTRlODUyZjRkMDJkZjRjZDFmNDY5OGM3ZTFjYzAuLjFkZDdlYTllYzNmYTVlYjI4OWFmMGIwYmE3
MjkwMDZjYjhiN2U1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaApAQCAtNDcsOCArNDcsOCBAQCBw
dWJsaWM6CiAgICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Ny
b3NzZmFkZVNpemU7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogCiAgICAg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2Us
IGZsb2F0IHBlcmNlbnRhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKaW5kZXggZmFhMGJmMDYxNDA1OTgxMmI2NjQzNTE4ZTU4
NzM3OGQwM2VhNzlkMy4uMmZiNmZhNDRkODhiZTJjMmMzY2E3MzZkYzM4YWEyMjQ4ZjkyMGNmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFp
bnRJbWFnZS5jcHAKQEAgLTE3MCwxMCArMTcwLDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBDdXN0b21Q
YWludEltYWdlOjpkb0N1c3RvbVBhaW50KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNv
CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21w
b3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdN
b2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIo
ZGVzdENvbnRleHQpOwotICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAg
ICBkZXN0Q29udGV4dC5jbGlwKGRlc3RSZWN0KTsKICAgICBkZXN0Q29udGV4dC50cmFuc2xhdGUo
ZGVzdFJlY3QubG9jYXRpb24oKSk7CiAgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0
LnNpemUoKSkKQEAgLTE4Myw3ICsxODMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdAogfQog
CiB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJv
dmlkZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVy
Zm9ybWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTIwNSw3
ICsyMDUsNyBAQCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGlmIChkZXN0Q29udGV4dC5k
cmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRUb0x1bWluYW5jZU1h
c2soKTsKIAotICAgIGJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBv
c2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGJ1ZmZlci0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQs
IGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIGFkanVzdGVkUGF0dGVybkNUTSwgcGhhc2UsIHNw
YWNpbmcsIG9wdGlvbnMpOwogICAgIGRlc3RDb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZh
bHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Vz
dG9tUGFpbnRJbWFnZS5oCmluZGV4IDRlOGU1ODk3OTUxYTk1MTI1YjkxMzQ4MGFmOTMzMDNlYjY3
OGQ3MWUuLmU3NzA3OWI4ODI5NmVmMTIwZGYwYjYyNDQyZTg1ZTE3MjdlNmE1ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgK
QEAgLTUyLDggKzUyLDggQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkb0N1c3Rv
bVBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmluYWw7
CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsK
IAogICAgIFdlYWtQdHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OlBhaW50RGVmaW5pdGlvbj4g
bV9wYWludERlZmluaXRpb247CiAgICAgVmVjdG9yPFN0cmluZz4gbV9pbnB1dFByb3BlcnRpZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJ
bWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2Uu
aAppbmRleCAzYTg1OWMzMWFjNGYwMmJiN2EyY2I0NjQzM2Q4ZDhhYmFlNjIxYTQxLi4xMDg2ODhi
OTc1NjU3ZGE0N2IxNzRmZjU3MzQ5OWQxYTJlOGU0YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKQEAgLTQ2LDkgKzQ2LDggQEAg
cHVibGljOgogICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgLypkZXN0cm95QWxsKi8g
PSB0cnVlKSBvdmVycmlkZSB7IH0KIAogcHJvdGVjdGVkOgotICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlID0gMDsKLSAgICB2b2lkIGRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAot
ICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZSA9IDA7CisgICAgSW1hZ2VE
cmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgb3ZlcnJpZGUgPSAwOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlz
IHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggNWQ0ZWUy
ODE2NmJiNDg4YTc5ZGNhMjk0ZmFhY2RmNjVjMmE0ZjQwYi4uZjNlYzBhMWFkNDYwNDEyODcyZDky
MGU3ZTFlMDExNjc2NmNhNjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTM5LDEwICszOSwxMCBAQCBHcmFkaWVudElt
YWdlOjpHcmFkaWVudEltYWdlKEdyYWRpZW50JiBnZW5lcmF0b3IsIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSkKIAogR3JhZGllbnRJbWFnZTo6fkdyYWRpZW50SW1hZ2UoKSA9IGRlZmF1bHQ7CiAKLUlt
YWdlRHJhd1Jlc3VsdCBHcmFkaWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGRlc3RDb250ZXh0KTsKLSAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuc2V0Q29tcG9zaXRlT3Bl
cmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7
CiAgICAgZGVzdENvbnRleHQuY2xpcChkZXN0UmVjdCk7CiAgICAgZGVzdENvbnRleHQudHJhbnNs
YXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gc3Jj
UmVjdC5zaXplKCkpCkBAIC01Myw3ICs1Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFkaWVudElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiB9
CiAKIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBwcm92
aWRlIHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBwZXJm
b3JtYW5jZS4KICAgICBGbG9hdFNpemUgYWRqdXN0ZWRTaXplID0gc2l6ZSgpOwpAQCAtOTEsNyAr
OTEsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYg
ZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIGRlc3RDb250ZXh0LnNldERyYXdM
dW1pbmFuY2VNYXNrKGZhbHNlKTsKIAogICAgIC8vIFRpbGUgdGhlIGltYWdlIGJ1ZmZlciBpbnRv
IHRoZSBjb250ZXh0LgotICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQYXR0ZXJuKGRlc3RDb250ZXh0
LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBoYXNlLCBz
cGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBtX2NhY2hlZEltYWdlLT5kcmF3
UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgYWRqdXN0ZWRQ
YXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCmluZGV4IDFkOWRkOTA4
YmMwNzYxZTU1MjRkMWE0NzhlYTZjNWVhZmI3ODhlZmQuLjBjYzE4NDM5YzE0N2Y5MzRkZGUxOTMw
NzQ4ZGE3MGMzZmIxNzVhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBHcmFkaWVudEltYWdlKEdyYWRpZW50JiwgY29uc3QgRmxvYXRTaXplJik7CiAKLSAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsKLSAgICB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1
bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBm
aW5hbDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZp
bmFsOwogICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBmaW5hbDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IDdhZjllYWUwNDdhNzk2NjUyM2VmNDY5NTM0NThkZmQzYzlkZjkyZTkuLjMz
NTEzZGY0ZjgzN2ZhNjg2ZDNkNGJhZjQ5OGMwZWU4ODE1MzEwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNzE1
LDU1ICs3MTUsNTAgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdl
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGkKIAogSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdP
cHRpb25zKQogewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxvYXRSZWN0IHNyY1Jl
Y3QoRmxvYXRQb2ludCgpLCBpbWFnZS5vcmlnaW5hbFNpemUoKSk7Ci0jZWxzZQogICAgIEZsb2F0
UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKTsKLSNlbmRpZgotICAgICAg
ICAKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc3JjUmVjdCwgaW1h
Z2VQYWludGluZ09wdGlvbnMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBpZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBs
LT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlv
biwgc291cmNlLCBvcHRpb25zKTsKIAotICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5l
ciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXcoKnRo
aXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRl
T3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5n
T3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlv
bik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOwor
ICAgIHJldHVybiBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25z
KTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBv
aW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQorSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBz
b3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGlu
ZzsKIAogICAgIGlmIChtX2ltcGwpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZElt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQ
YWludGluZ09wdGlvbnMpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShp
bWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwog
Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5
Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25R
dWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0
aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1
YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7
CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRp
bGVTY2FsZUZhY3RvciwKLSAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVs
ZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25z
KQorICAgIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAg
ICAgaWYgKG1faW1wbCkKLSAgICAgICAgcmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1h
Z2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZElt
YWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2
UnVsZSwgb3B0aW9ucyk7CiAKICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYm
IHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2Nh
bGUuCi0gICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1
cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVG
YWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVy
YXRvcik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25R
dWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkp
OworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9y
KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKQEAgLTc3NiwxMyArNzcxLDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpCiAgICAgZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBkZXN0
aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgRmxvYXRTaXplKGltYWdlLmxvZ2ljYWxT
aXplKCkpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFs
aXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRp
b25RdWFsaXR5KTsKLSAgICBpbWFnZS5kcmF3KCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX2JsZW5kTW9kZSk7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGlu
dGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBvcHRpb25zLmludGVycG9sYXRp
b25RdWFsaXR5KCkpOworICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2UsIGNvbnN0IEZsb2F0UG9p
bnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGlu
Z09wdGlvbnMpCkBAIC04MDEsMTMgKzc5NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZwog
ICAgIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlKSwgZGVzdGluYXRpb24s
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZUxvZ2ljYWxTaXplKSksIGlt
YWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25z
dW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJl
Y3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1
YWxpdHkpOwotICAgIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKFdURk1vdmUoaW1hZ2UpLCAq
dGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3Np
dGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1vZGUpOworICAgIEludGVy
cG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29w
ZSgqdGhpcywgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBJbWFnZUJ1ZmZl
cjo6ZHJhd0NvbnN1bWluZyhXVEZNb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3Vy
Y2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQ0N2Q3ZTNlMzU0NzYyZTgw
YjhmMjdhOTUyNjIzMjI3OWI1ZjkwOTQuLjdjZTFjYmIwYTM4MTBhZmMzZGJlMjViNGYyZGY0OTM2
ODg5M2U0MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgor
I2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgog
I2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgpA
QCAtMjEwLDQzICsyMTEsNiBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUgewogI2VuZGlm
CiB9OwogCi1zdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMgewotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291
cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIEludGVycG9sYXRp
b25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQpCi0g
ICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKLSAgICAgICAg
LCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0gICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2Rp
bmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCi0gICAgICAgICwg
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKLSAgICB7Ci0gICAg
fQotCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
biwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0
aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9s
YXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRh
dGlvbjo6Tm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKQotICAg
ICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0gICAgICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2RlKGRlY29kaW5n
TW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAgICAgICAsIG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAgewotICAgIH0K
LSAgICAKLSAgICBib29sIHVzZXNEZWZhdWx0SW50ZXJwb2xhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJwb2xhdGlvblF1YWxpdHkgPT0gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7IH0KLQotICAg
IENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgQmxlbmRNb2RlIG1f
YmxlbmRNb2RlOwotICAgIERlY29kaW5nTW9kZSBtX2RlY29kaW5nTW9kZTsKLSAgICBJbWFnZU9y
aWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9pbnRl
cnBvbGF0aW9uUXVhbGl0eTsKLX07Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZSB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoKSA9IGRlZmF1bHQ7CiAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKQEAgLTM0Nyw3
ICszMTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKSB8fCBVU0UoRElSRUNU
MkQpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKQEAgLTM5NSwyMyArMzU5
LDIyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygp
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9u
cygpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFn
ZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRQb2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKLSAgICAgICAgSW1hZ2U6OlRpbGVS
dWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdl
UGFpbnRpbmdPcHRpb25zKCkpOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNv
dXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rvciwg
SW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAgICB2b2lkIGRyYXdJ
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAg
IHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
KEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKLSAgICB2
b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAg
dm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4s
IGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEltYWdlSW50ZXJwb2xh
dGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRpb25RdWFs
aXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmlt
YWdlSW50ZXJwb2xhdGlvblF1YWxpdHk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKaW5kZXggOTYzNjQ5ZjU2
OWFlMzQ3NzAxZDUxZGFkZGY0MDdmNWFmZmE2YzBhMi4uY2U4ZTE3MmExNjFhZTQ2YWVhMjg4Mjc5
ZWJjOTA4NjEzZTJjY2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKQEAgLTM3LDI3ICszNywyNyBAQCBH
cmFwaGljc0NvbnRleHRJbXBsOjp+R3JhcGhpY3NDb250ZXh0SW1wbCgpCiB7CiB9CiAKLUltYWdl
RHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGlt
YWdlUGFpbnRpbmdPcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6
OmRyYXdJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBJbnRlcnBvbGF0aW9uUXVh
bGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJu
IGltYWdlLmRyYXcoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09w
dGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9ibGVuZE1v
ZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50aW5nT3B0
aW9ucy5tX29yaWVudGF0aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIg
aW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBv
bGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhdyhjb250ZXh0LCBkZXN0aW5h
dGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29u
dGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2lu
dCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNw
YWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykK
K0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKLSAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgaW1hZ2VQYWludGluZ09wdGlv
bnMubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXdUaWxlZChj
b250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGluZ09wdGlvbnMubV9i
bGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2RlLCBpbWFnZVBhaW50
aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50
YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5p
bnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRl
eHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0K
IAotSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1w
bChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQor
SW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGls
ZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVs
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGhSdWxl
ID09IEltYWdlOjpTdHJldGNoVGlsZSAmJiB2UnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUpIHsK
ICAgICAgICAgLy8gSnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlSW1w
bChjb250ZXh0LCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlv
bnMpOworICAgICAgICByZXR1cm4gZHJhd0ltYWdlSW1wbChjb250ZXh0LCBpbWFnZSwgZGVzdGlu
YXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBp
bWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFj
dG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0
b3IpOworICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclRoaXNTY29wZShjb250ZXh0LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkp
OworICAgIHJldHVybiBpbWFnZS5kcmF3VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0
b3IoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCBiODcz
MTk0ZWUyNDYwMWZlNGUwNzE0N2FhNzFlYTMwNTg3YTg0YTQ1Li44ZmJjNWU1NmNmMTU0ODUzNzc5
YzU1NDQ1NDVlOWU2YTFjOWM4ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03Myw5ICs3Myw5IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwg
Y29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rvciwg
SW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0Uo
RElSRUNUMkQpCi0gICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJ
bWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRy
YXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRl
cm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJv
cmRlclRoaWNrbmVzcykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZShjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCBiNmJkYTMwMTRhMDFkZmYzNjVjNDg5ZTc4OTc4MTMy
ZTM1OGNiOGRkLi4xNTMzNjU0YmIzMTZlOGZjNDczYWY4ZDJhMDQ3M2NjNmNlY2M2OTBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0xMzcsMzMgKzEz
NywyOCBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCiAgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVy
YXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAKLXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBp
ZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCZjdHh0KSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgY3R4dC5kcmF3
UGF0dGVybigqdGhpcywgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3B0aW9ucyk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQg
SW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNj
YWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGls
ZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBDb2xvciBjb2xvciA9IHNpbmdsZVBpeGVsU29saWRDb2xvcigpOwogICAg
IGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQs
IGRlc3RSZWN0LCBjb2xvciwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwg
ZGVzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICBy
ZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogICAgIH0KIAogICAgIEFTU0VSVCghaXNC
aXRtYXBJbWFnZSgpIHx8IG5vdFNvbGlkQ29sb3IoKSk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IG9yaWdpbmFsU2l6ZSgpOwot
I2Vsc2UKICAgICBGbG9hdFNpemUgaW50cmluc2ljVGlsZVNpemUgPSBzaXplKCk7Ci0jZW5kaWYK
ICAgICBpZiAoaGFzUmVsYXRpdmVXaWR0aCgpKQogICAgICAgICBpbnRyaW5zaWNUaWxlU2l6ZS5z
ZXRXaWR0aChzY2FsZWRUaWxlU2l6ZS53aWR0aCgpKTsKICAgICBpZiAoaGFzUmVsYXRpdmVIZWln
aHQoKSkKQEAgLTE4NCw3ICsxNzksNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxl
ZChHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlYwogICAgICAg
ICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8g
c2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRXaWR0aChkZXN0UmVj
dC53aWR0aCgpIC8gc2NhbGUud2lkdGgoKSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldEhl
aWdodChkZXN0UmVjdC5oZWlnaHQoKSAvIHNjYWxlLmhlaWdodCgpKTsKLSAgICAgICAgcmV0dXJu
IGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBkZWNv
ZGluZ01vZGUsIG9yaWVudGF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJl
Y3QsIHZpc2libGVTcmNSZWN0LCBvcHRpb25zKTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQpAQCAtMTk2LDcgKzE5MSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1Rp
bGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAgICAg
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55
KCkpIC8gc2NhbGUuaGVpZ2h0KCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lk
dGgoMSk7CiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVp
Z2h0KCkgLyBzY2FsZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBk
ZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdN
b2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVj
dCwgdmlzaWJsZVNyY1JlY3QsIHsgb3B0aW9ucywgQmxlbmRNb2RlOjpOb3JtYWwgfSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHNpemUoKS5oZWlnaHQoKSA9PSAxICYmIGludGVyc2VjdGlvbihv
bmVUaWxlUmVjdCwgZGVzdFJlY3QpLndpZHRoKCkgPT0gZGVzdFJlY3Qud2lkdGgoKSkgewogICAg
ICAgICAgICAgRmxvYXRSZWN0IHZpc2libGVTcmNSZWN0OwpAQCAtMjA0LDcgKzE5OSw3IEBAIElt
YWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDAp
OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAv
IHNjYWxlLndpZHRoKCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEp
OwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0
LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb24pOworICAg
ICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9w
dGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBA
IC0yMzYsNyArMjMxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWMKICAgICAgICAgICAgICAg
ICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVjdC5sb2NhdGlv
bigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgpLCAxIC8gc2Nh
bGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1Jl
Y3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50
YXRpb24pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRyYXcoY3R4dCwgdG9SZWN0LCBmcm9t
UmVjdCwgeyBvcHRpb25zLCBCbGVuZE1vZGU6Ok5vcm1hbCB9KTsKICAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIHRvWCArPSBjdXJy
ZW50VGlsZVJlY3Qud2lkdGgoKTsKQEAgLTI1MCwxNyArMjQ1LDE3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjCiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IEFmZmlu
ZVRyYW5zZm9ybSgpLnNjYWxlTm9uVW5pZm9ybShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQo
KSk7CiAgICAgRmxvYXRSZWN0IHRpbGVSZWN0KEZsb2F0UG9pbnQoKSwgaW50cmluc2ljVGlsZVNp
emUpOwotICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgb25lVGlsZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7
CisgICAgZHJhd1BhdHRlcm4oY3R4dCwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBvbmVUaWxlUmVjdC5sb2NhdGlvbigpLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBzdGFy
dEFuaW1hdGlvbigpOwogICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiB9CiAK
IC8vIEZJWE1FOiBNZXJnZSB3aXRoIHRoZSBvdGhlciBkcmF3VGlsZWQgZXZlbnR1YWxseSwgc2lu
Y2Ugd2UgbmVlZCBhIGNvbWJpbmF0aW9uIG9mIGJvdGggZm9yIHNvbWUgdGhpbmdzLgotSW1hZ2VE
cmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRT
aXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29t
cG9zaXRlT3BlcmF0b3Igb3ApCitJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFw
aGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUg
aFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsgICAgCiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjdHh0
LCBkc3RSZWN0LCBjb2xvciwgb3ApOworICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwg
ZHN0UmVjdCwgY29sb3IsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CiAgICAgICAgIHJl
dHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7CiAgICAgfQogICAgIApAQCAtMzMwLDE4ICsz
MjUsMTQgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QKICAgICAgICAgdlBoYXNlIC09IChkc3RS
ZWN0LmhlaWdodCgpIC0gc2NhbGVkVGlsZUhlaWdodCkgLyAyOwogCiAgICAgRmxvYXRQb2ludCBw
YXR0ZXJuUGhhc2UoZHN0UmVjdC54KCkgLSBoUGhhc2UsIGRzdFJlY3QueSgpIC0gdlBoYXNlKTsK
LSAgICBkcmF3UGF0dGVybihjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwYXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wKTsKKyAgICBkcmF3UGF0dGVybihjdHh0LCBkc3RS
ZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9w
dGlvbnMpOwogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkRHJhdzsKIH0KIAogdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
TGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6
ZSYgaW50cmluc2ljUmF0aW8pCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBpbnRy
aW5zaWNSYXRpbyA9IG9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBpbnRyaW5zaWNSYXRpbyA9
IHNpemUoKTsKLSNlbmRpZgogICAgIGludHJpbnNpY1dpZHRoID0gTGVuZ3RoKGludHJpbnNpY1Jh
dGlvLndpZHRoKCksIEZpeGVkKTsKICAgICBpbnRyaW5zaWNIZWlnaHQgPSBMZW5ndGgoaW50cmlu
c2ljUmF0aW8uaGVpZ2h0KCksIEZpeGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCmluZGV4IDM2OTk3YzgzNTIxYzQ2YzVjZDQ3NTU2ZDgxNDRlZTkyNTUwOWE0
YTcuLmQ1NTA2NzczMmY3ZjM5YTM5MDk5ODhhYjRhZWUyYjU3YWE5NWVmMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtNjgsNiArNjgsNyBAQCBjbGFzcyBG
bG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJ
bXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOwog
c3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBnZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1h
Z2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZyYW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNl
cyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTE2LDEwICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgZmxv
YXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVh
bCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBv
cmlnaW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCk7IH0KLSNlbmRpZgotCiAgICAgV0VC
Q09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKICAgICB2aXJ0dWFsIEVuY29kZWREYXRh
U3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRhUmVjZWl2ZWQqLykgeyByZXR1cm4gRW5j
b2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIApAQCAtMTczLDggKzE3MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4YnVmKCkgeyByZXR1cm4gbnVsbHB0cjsg
fQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdmlydHVhbCB2b2lkIGRy
YXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENvbG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtMTkwLDkgKzE4Niw5IEBAIHByb3RlY3RlZDoKICNpZiBQTEFURk9STShXSU4pCiAgICAgdmly
dHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0
ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbikgPSAwOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50
JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdl
T3JpZW50YXRpb24pOwotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0g
MDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEZs
b2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1
bGUsIFRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwog
CiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5nCiAgICAgdmlydHVhbCBDb2xvciBzaW5n
bGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA4ZWZkNThhMjg5
ODEzMGVmZGFlNzMxODBjOTZiNWMyYjM2NGIzNGQwLi4xNjk4MDI2ZWMyNDQwZjI4MTUwYjRiMjAz
ZTQ2ZWM1YzY0ZTJhMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNELmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJE
YXRhLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CkBAIC01MSw3ICs1Miw3IEBAIGNsYXNzIEltYWdlRGF0
YTsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0g
ICAgCisKIGVudW0gQmFja2luZ1N0b3JlQ29weSB7CiAgICAgQ29weUJhY2tpbmdTdG9yZSwgLy8g
R3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRoZSBjb3B5LgogICAgIERv
bnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5IGFmZmVjdCB0aGUgY29w
eS4KQEAgLTE1MSwxMCArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaENvbnRleHQo
KSBjb25zdDsKICNlbmRpZgogICAgIAotICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9h
dFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VP
dmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7Ci0gICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAotICAgIHN0YXRpYyB2b2lkIGRyYXdDb25zdW1pbmcoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAt
MSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHN0YXRpYyB2b2lkIGRyYXdDb25zdW1pbmcoc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0x
LCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBpbmxpbmUg
dm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNlTWFzaygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBhaW50aW5nT3B0aW9ucy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZjQ1YzNmZDZkMzM4NDFiYzAzNTU1ZjA3YzkwMmM5MWQ1MTFjZGEwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGlu
Z09wdGlvbnMuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2RpbmdPcHRp
b25zLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50
YXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW1hZ2VQYWludGluZ09w
dGlvbnMgeworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIE9wdGlvbnM+CisgICAgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoT3B0aW9ucy4uLiBvcHRpb25zKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9u
KG9wdGlvbnMuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIE92ZXJycmlk
ZXM+CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG90aGVyLCBPdmVycnJpZGVzLi4uIG92ZXJycmlkZXMpCisgICAgICAgIDogSW1hZ2VQYWludGlu
Z09wdGlvbnMob3RoZXIpCisgICAgeworICAgICAgICBzZXRPcHRpb24ob3ZlcnJyaWRlcy4uLik7
CisgICAgfQorCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoKSA9IGRlZmF1bHQ7CisgICAgSW1h
Z2VQYWludGluZ09wdGlvbnMoY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IGRlZmF1bHQ7
CisKKyAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9ibGVuZE1vZGU7IH0KKyAgICBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGluZ01vZGU7IH0KKyAgICBJbWFnZU9yaWVudGF0aW9u
IG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9p
bnRlcnBvbGF0aW9uUXVhbGl0eTsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGaXJzdCwgdHlwZW5hbWUuLi4gUmVzdD4KKyAgICB2b2lkIHNldE9wdGlvbihGaXJzdCBmaXJz
dCwgUmVzdC4uLiByZXN0KQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKGZpcnN0KTsKKyAgICAg
ICAgc2V0T3B0aW9uKHJlc3QuLi4pOworICAgIH0KKworICAgIHZvaWQgc2V0T3B0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKSB7IG1fY29tcG9zaXRlT3BlcmF0b3IgPSBj
b21wb3NpdGVPcGVyYXRvcjsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEJsZW5kTW9kZSBibGVuZE1v
ZGUpIHsgbV9ibGVuZE1vZGUgPSBibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldE9wdGlvbihEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlKSB7IG1fZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlOyB9
CisgICAgdm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29y
aWVudGF0aW9uID0gb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9wdGlvbihJbWFnZU9yaWVu
dGF0aW9uOjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KKyAgICB2b2lkIHNldE9wdGlvbihJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBv
bGF0aW9uUXVhbGl0eSkgeyBtX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1
YWxpdHk7IH0KKworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0b3IgeyBD
b21wb3NpdGVTb3VyY2VPdmVyIH07CisgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRN
b2RlOjpOb3JtYWwgfTsKKyAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGUgeyBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9u
IHsgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1f
aW50ZXJwb2xhdGlvblF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uRGVmYXVsdCB9OworfTsKKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVk
SW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggOWE2YjAxOGQ0MmZhNzQ0ODdkMTQ3YWE2Y2U2
NDY2YTE5ZWVhZWIzZC4uZDNkM2ZhMzllMDZkODllYTYyYzE3OWQ5ODg3ZjQ1YmJmNmM4ZGJmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC00MCwxMSArNDAsMTEgQEAgTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNv
bnN0IEZsb2F0U2l6ZSYKICAgICBzZXRDb250YWluZXJTaXplKHNpemUpOwogfQogCi1JbWFnZURy
YXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBE
ZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFn
ZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpIHx8IFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNv
bnRleHQpOwotICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBi
bGVuZE1vZGUpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29t
cG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAgICAgY29udGV4dC5jbGlw
KGRzdFJlY3QpOwogICAgIGNvbnRleHQudHJhbnNsYXRlKGRzdFJlY3QubG9jYXRpb24oKSk7CiAg
ICAgaWYgKGRzdFJlY3Quc2l6ZSgpICE9IHNyY1JlY3Quc2l6ZSgpKQpAQCAtNTcsMTMgKzU3LDEy
IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwog
ICAgIFVOVVNFRF9QQVJBTShkc3RSZWN0KTsKICAgICBVTlVTRURfUEFSQU0oc3JjUmVjdCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2Rl
KTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKICNlbmRpZgogfQogCi12b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFn
ZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKK3ZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCiAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHNpemUoKSwgY29udGV4dCk7CkBAIC03NCwxNiArNzMsMTUgQEAgdm9pZCBOYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXQKICAgICBUaGVtZTo6c2luZ2xldG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFw
aGljc0NvbnRleHQsIEZsb2F0UmVjdCgwLCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdo
dCgpKSk7CiAKICAgICAvLyBUaWxlIHRoZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4K
LSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwg
cGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OworICAgIGltYWdlQnVmZmVyLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAg
VU5VU0VEX1BBUkFNKHNyY1JlY3QpOwogICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3Jt
KTsKICAgICBVTlVTRURfUEFSQU0ocGhhc2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsK
LSAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9w
KTsKLSAgICBVTlVTRURfUEFSQU0oYmxlbmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9u
cyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAzZTdjOTZkOTQ3MWYx
M2Y0Njk2MzFmYjZlZjRkNTRmZjg1MjUxYjFjLi4wMjg1ZTFmOGI5YTJhNTE2MzJkZmM0ZjM3MGEy
YTBjZDYxM2Q4MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzksOCArMzksOCBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBO
YW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoU3RyaW5nIG5hbWUsIGNvbnN0IEZsb2F0U2l6ZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAppbmRl
eCA1YWY0M2FhMmU5MDIwNTdmMDdhMGI2MTg5YzYwMDZkNjA1OGRhZDQ1Li44ZTNhZTIxNjYwYzU0
ZDM1NzBhYzJkYjEzYTZiNWI1Y2IzY2I3ZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKQEAgLTI3LDggKzI3LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAKICNpZiBVU0UoQ0cp
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNjYsNyArNjUsNyBAQCBJbnRTaXplIG5h
dGl2ZUltYWdlU2l6ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogYm9vbCBuYXRpdmVJbWFnZUhh
c0FscGhhKGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBp
eGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogCi12b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJik7CiB2b2lkIGNsZWFyTmF0aXZlSW1hZ2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQ
dHImKTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDc0NjQwZjcwNGVjZTQ5NmRh
NDBhZjQxM2JhNmY0ZDliZGVhZjQxOWIuLmE4OTVkYWRkMDQyMWI3ZWQwOTExMjhkMjNmNjVmNWRk
OTQ0YTQ3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtMTc5LDggKzE3OSw3IEBAIHN0YXRp
YyB2b2lkIGRyYXdTaGFkb3dMYXllckJ1ZmZlcihQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBJbWFnZUJ1CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3
TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91
bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgbGF5ZXJTaXplKSwgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lLAotICAgICAgICAgICAgSW50
ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgp
KTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQo
KSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29t
cG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkp
OwogICAgIH0KIH0KIApAQCAtMTkyLDggKzE5MSw3IEBAIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBJbWFnZUJ1ZmZlciYK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9y
bUNvbnRleHQsIHN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzaGFkb3dTdGF0ZS5n
bG9iYWxDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRp
b246Ok5vbmUsCi0gICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUu
Z2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxh
dGZvcm1Db250ZXh0LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dT
dGF0ZS5nbG9iYWxDb21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwg
U2hhZG93U3RhdGUoKSk7CiAgICAgfQogfQogCkBAIC04NzgsMzcgKzg3NiwzNyBAQCB2b2lkIGRy
YXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmls
bFNvdXJjZSYgZmlsbFNvdQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdO
YXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19z
dXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2JhbEFscGhhLCBj
b25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMsIGZsb2F0IGdsb2JhbEFscGhhLCBj
b25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNh
dmUoKTsKIAogICAgIC8vIFNldCB0aGUgY29tcG9zaXRpbmcgb3BlcmF0aW9uLgotICAgIGlmIChj
b21wb3NpdGVPcGVyYXRvciA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBC
bGVuZE1vZGU6Ok5vcm1hbCAmJiAhY2Fpcm9TdXJmYWNlSGFzQWxwaGEoc3VyZmFjZSkpCisgICAg
aWYgKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYm
IG9wdGlvbnMuYmxlbmRNb2RlKCkgPT0gQmxlbmRNb2RlOjpOb3JtYWwgJiYgIWNhaXJvU3VyZmFj
ZUhhc0FscGhhKHN1cmZhY2UpKQogICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIENvbXBvc2l0ZUNvcHksIEJsZW5kTW9kZTo6Tm9ybWFs
KTsKICAgICBlbHNlCi0gICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9u
KHBsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgICAg
IENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0
aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIEZs
b2F0UmVjdCBkc3QgPSBkZXN0UmVjdDsKLSAgICBpZiAob3JpZW50YXRpb24gIT0gSW1hZ2VPcmll
bnRhdGlvbjo6Tm9uZSkgeworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VP
cmllbnRhdGlvbjo6Tm9uZSkgewogICAgICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMg
dGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgICAgIENhaXJvOjp0cmFuc2xhdGUocGxh
dGZvcm1Db250ZXh0LCBkc3QueCgpLCBkc3QueSgpKTsKICAgICAgICAgZHN0LnNldExvY2F0aW9u
KEZsb2F0UG9pbnQoKSk7Ci0gICAgICAgIENhaXJvOjpjb25jYXRDVE0ocGxhdGZvcm1Db250ZXh0
LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChkc3Quc2l6ZSgpKSk7Ci0gICAgICAg
IGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgICAgIENhaXJvOjpj
b25jYXRDVE0ocGxhdGZvcm1Db250ZXh0LCBvcHRpb25zLm9yaWVudGF0aW9uKCkudHJhbnNmb3Jt
RnJvbURlZmF1bHQoZHN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
bigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBkZXN0aW5hdGlv
biByZWN0YW5nbGUgd2lsbCBoYXZlIGl0cyB3aWR0aCBhbmQgaGVpZ2h0IGFscmVhZHkgcmV2ZXJz
ZWQgZm9yIHRoZSBvcmllbnRhdGlvbiBvZgogICAgICAgICAgICAgLy8gdGhlIGltYWdlLCBhcyBp
dCB3YXMgbmVlZGVkIGZvciBwYWdlIGxheW91dCwgc28gd2UgbmVlZCB0byByZXZlcnNlIGl0IGJh
Y2sgaGVyZS4KICAgICAgICAgICAgIGRzdCA9IEZsb2F0UmVjdChkc3QueCgpLCBkc3QueSgpLCBk
c3QuaGVpZ2h0KCksIGRzdC53aWR0aCgpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRyYXdT
dXJmYWNlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZSwgZHN0LCBzcmNSZWN0LCBpbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5LCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOworICAgIGRyYXdTdXJm
YWNlKHBsYXRmb3JtQ29udGV4dCwgc3VyZmFjZSwgZHN0LCBzcmNSZWN0LCBvcHRpb25zLmludGVy
cG9sYXRpb25RdWFsaXR5KCksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CiAgICAgcGxhdGZv
cm1Db250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0
IEludFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IElu
dFNpemUmIHNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aHkgdGhlIHNpemUgaGFzIHRvIGJlIHBhc3Nl
ZCBpbiBhcyBhbiBJbnRSZWN0LgotICAgIGRyYXdQYXR0ZXJuVG9DYWlyb0NvbnRleHQocGxhdGZv
cm1Db250ZXh0LmNyKCksIHN1cmZhY2UsIHNpemUsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgdG9DYWlyb09wZXJhdG9yKGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpLCBk
ZXN0UmVjdCk7CisgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChwbGF0Zm9ybUNvbnRleHQu
Y3IoKSwgc3VyZmFjZSwgc2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCB0
b0NhaXJvT3BlcmF0b3Iob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5k
TW9kZSgpKSwgZGVzdFJlY3QpOwogfQogCiB2b2lkIGRyYXdTdXJmYWNlKFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIElu
dGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0IGdsb2Jh
bEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCmlu
ZGV4IDA4NWU2MWE1YjNjOWM3Yzk3MjE2YjNjN2JjZDZkNzY5MjU4Y2M4NGYuLjU4MzRmNDMwZjA1
ZGQxNTgzNzM4ZTMxZTQzM2QyNzE0MGE2Y2QyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCkBAIC0xMzgs
OCArMTM4LDggQEAgdm9pZCBjbGVhclJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBG
bG9hdFJlY3QmKTsKIAogdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29u
c3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
Y29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZl
Y3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0
ZSYpOwotdm9pZCBkcmF3UGF0dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEludFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSk7Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRl
Jik7Cit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFj
ZV90KiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpOwogV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIEludGVycG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3Rh
dGUmKTsKIAogdm9pZCBkcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0
UmVjdCYsIGZsb2F0LCBjb25zdCBDb2xvciYsIFN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDIzZjY1M2ViZTM3NTIxZmM3MjVhZDNi
YTE5MmUzNTQwYmFjMTllZWQuLmQ1MDM5Yjk3MjExNjRkMjFkYmQyZDhhNWQ3OGQwMzNlZDFiNWRm
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKQEAgLTEyMCwxOSArMTIwLDE5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcykKICAgICBDYWlybzo6ZHJhd1JlY3QoKnBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LCBib3JkZXJUaGlja25lc3MsIHN0YXRlLmZpbGxDb2xvciwgc3RhdGUuc3Ryb2tl
U3R5bGUsIHN0YXRlLnN0cm9rZUNvbG9yKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUg
YmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9y
aWVudGF0aW9uKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9
IHRoaXMtPnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250
ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3Is
IGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHks
IHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJh
d05hdGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBz
cmNSZWN0LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3Rh
dGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCiAvLyBUaGlzIGlzIG9u
bHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFkb3dzLgpA
QCAtNjYwLDE5ICs2NjAsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXQKICAgICBDYWlybzo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCByb3VuZGVk
SG9sZVJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0
YXRlKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1h
Z2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAg
ICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVj
dCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBp
ZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAg
ICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQo
KSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICAgICAgQ2Fp
cm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwgSW50U2l6
ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hv
dWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5jcHAKaW5kZXggMDRmMmE5ZmY1NDY5YWE1YmEyNGQxNDk1NjU0YjYwZjBiYzQzZDJhYi4uODUy
YTI3NmY3ZmM2NjE2YTk5MDRhZmVlYjBlOTkwOTcwODA2MjMzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCBJbWFnZURyYXdSZXN1
bHQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3VGlsZWRJbWFnZShJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsbwogICAgIHJldHVybiBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFn
ZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxl
U2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGltYWdlU2l6ZSk7CiAgICAgYXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0
ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdl
LmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhh
LCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKKyAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KG1fcGxhdGZvcm1Db250ZXh0LCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQor
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpCi0gICAgICAgIENhaXJvOjpkcmF3UGF0dGVybihtX3BsYXRmb3JtQ29udGV4dCwg
c3VyZmFjZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsK
KyAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLmdl
dCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIG9wdGlvbnMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxD
YWlybzo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCBib3JkZXJUaGlja25l
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCmluZGV4IGYxYjAyZDM0YWIyZmYy
OWFkY2ZiODc0M2M4OTRjMWU0NjA4YjY3M2IuLjJmNTE5ZDQ1NDc3ZDQzNzk4Yjc1OWE4MTUzNDYy
Yzk4MzUzN2NkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03NCw4
ICs3NCw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1
bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcAppbmRleCBlMDFlNjBiOWVlZTdiYTE4Mzk3YTYzZWY0YTE3NjY3ZmZkYzRhNDVhLi4wZjcy
NjU3MDI0ZWJhYzc0MGIwZTc4ZjczMmFjOTNmYjBkZGI3ZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
LmNwcApAQCAtMzQ0LDI0ICszNDQsMjMgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6
ZmFzdENvcHlJbWFnZU1vZGUoKQogICAgIHJldHVybiBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0K
IAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9w
ZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0Nv
bnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGlj
c0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewotICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCAgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQg
PT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3RvcmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29weUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0
aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpKTsKKyAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0lt
YWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUp
CisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpKQotICAgICAgICBp
bWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCk7CisgICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihj
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNv
bG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+JiBsb29rVXBUYWJsZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUlt
YWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0
aXZlSW1hZ2VDYWlyby5jcHAKaW5kZXggODIzZmYwYzdkNzZjODNlYWVkNjNlYzk4ZmYxNGYwMmEz
NDBiZjljMi4uZGUzMDRmMzVmNjUyOWNkNmZkMTU4ZTlhMDNjOWYxMGMzZDViZmMyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0aXZlSW1hZ2VD
YWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vTmF0
aXZlSW1hZ2VDYWlyby5jcHAKQEAgLTU3LDkgKzU3LDkgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5n
bGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVy
biBjb2xvckZyb21QcmVtdWx0aXBsaWVkQVJHQigqcGl4ZWwpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
KQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShp
bWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJs
ZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBjbGVh
ck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNvbnN0IE5hdGl2ZUltYWdlUHRyJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
M0RDRy5jcHAKaW5kZXggODdjOTkwNzliYTBmYTE0NTMyZWYyNTM3NmJhMjUwMjY4YWMwOTVmYi4u
Y2Q2YmI3MzBlNjE2MTkxOTNlY2U2MGE5N2VmODg4ZDc3ZWZiNjEwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
M0RDRy5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4ZWxzLCBjb25zdCBJbgogICAg
IGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUo
MCwgLWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShjZ0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGltYWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdl
KGNnSW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
aW1hZ2VTaXplKSwgeyBDb21wb3NpdGVDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFw
aGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZTNmYjM4NGRiMzI3OTQ2Mjk1OThjMjljYmE1MDcz
MTYzOTAxODhiOS4uZWUyNzM4ZjQyMTBjNjkyYzM1YjkyYThkZTg5YWZkYTI3MGJkOGIyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcApAQCAtMjczLDEzICsyNzMsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJh
bnNmb3JtS25vd25Ub0JlSWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24p
OworICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4
OCw3ICsyODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IFJldGFpblB0cjxDR0ltYWdlUmVmPiYgaW1hZ2UsIGNvbnN0CiAjZW5kaWYKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2UpOwogCi0gICAgZmxvYXQgY3VyckhlaWdodCA9
IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3ViSW1h
Z2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7CisgICAgZmxvYXQg
Y3VyckhlaWdodCA9IG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgpID8g
Q0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3ViSW1h
Z2UuZ2V0KCkpOwogICAgIGlmIChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTM1OCwxNSArMzU4LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QKICAg
ICBhZGp1c3RlZERlc3RSZWN0ID0gcm91bmRUb0RldmljZVBpeGVscyhhZGp1c3RlZERlc3RSZWN0
KTsKICNlbmRpZgogCi0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5k
TW9kZSk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3Np
dGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIEltYWdlT3JpZW50
YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKQogICAgIENHQ29udGV4dFRy
YW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVj
dC55KCkpOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludCgpKTsK
IAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7Ci0gICAg
ICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmllbnRhdGlvbi50cmFuc2Zvcm1Gcm9t
RGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwotICAgICAgICBpZiAob3JpZW50YXRp
b24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkg
IT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgeworICAgICAgICBDR0NvbnRleHRDb25jYXRDVE0o
Y29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVz
dGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCku
dXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJl
Y3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0
aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5l
ZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUu
CiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVzdFJl
Y3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwgYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSwg
YWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsKQEAgLTQwOCwxMyArNDA4LDEzIEBAIHN0YXRpYyB2
b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhcGF0dGVyblRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkg
ewotICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3Qs
IHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKKyAgICAg
ICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRl
cm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAgIENH
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKICAgICBDR0NvbnRleHRDbGlw
VG9SZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKIAotICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3Bl
cmF0aW9uKG9wLCBibGVuZE1vZGUpOworICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9u
KG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwgb3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAg
ICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgZGVzdFJlY3QueCgpLCBkZXN0UmVjdC55
KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwg
MSwgLTEpOwpAQCAtNDM5LDExICs0MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1Bh
dHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdAogICAg
IGZsb2F0IGggPSBDR0ltYWdlR2V0SGVpZ2h0KHRpbGVJbWFnZS5nZXQoKSk7CiAKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2U7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBGbG9hdFNpemUgaW1hZ2VTaXplID0gaW1hZ2Uub3JpZ2luYWxTaXplKCk7Ci0jZWxzZQogICAg
IEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS5zaXplKCk7Ci0jZW5kaWYKICAgICBpZiAodGls
ZVJlY3Quc2l6ZSgpID09IGltYWdlU2l6ZSkKICAgICAgICAgc3ViSW1hZ2UgPSB0aWxlSW1hZ2U7
CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IGQzNWZmMGVmZjk3MTk1MGVlZDFlM2ZkMDI2YmNk
YTllYWZhMzRlNDYuLjgzN2I4NzczZjZlMzljMjc5NTQzMzY2MjcyMDk4MDRiNjNjZWZlOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwCkBAIC0zMzQsMTEgKzMzNCwxMSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1h
Z2VCdWZmZXI6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcgog
ICAgIHJldHVybiBpbWFnZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9p
ZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdf
U1RPUkUpCiAgICAgaWYgKCFpbWFnZUJ1ZmZlci0+bV9kYXRhLnN1cmZhY2UpIHsKLSAgICAgICAg
aW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxl
bmRNb2RlKTsKKyAgICAgICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTM1
MSwxMyArMzUxLDEzIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpCiAgICAgCiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxl
KHJlc29sdXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdl
LmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBvcCwg
YmxlbmRNb2RlKTsKKyAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UuZ2V0KCks
IGJhY2tpbmdTdG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwog
I2Vsc2UKLSAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIG9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RDb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiAjZW5kaWYKIH0KIAotdm9pZCBJbWFnZUJ1ZmZl
cjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZTsKICAgICBpZiAoJmRlc3RDb250ZXh0ID09ICZj
b250ZXh0KCkgfHwgZGVzdENvbnRleHQuaXNBY2NlbGVyYXRlZENvbnRleHQoKSkKQEAgLTM2Nywx
MCArMzY3LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKIAogICAgIEZsb2F0UmVjdCBhZGp1
c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZShtX3Jlc29s
dXRpb25TY2FsZSk7Ci0gICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgp
LCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3As
IGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLmdldCgp
LCBtX2RhdGEuYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0
aW9ucyk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBG
bG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Qu
c2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwpAQCAtMzc4LDE0ICszNzgsMTQgQEAgdm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXMKICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdl
PiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3aW5nIGludG8gb3Vy
IG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAgICAgIGNvcHktPmRy
YXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyaW5n
ID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgICAgICBpbWFn
ZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2Rl
KTsKKyAgICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAg
ICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUp
OworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKaW5kZXggZjAyZDVkNTY2MGE2YzhhMTExZDViYzgyMTBm
NmQ1ZDlmZWFkM2JkOC4uODI5NDExNjYxZTk4NzA2MGUwM2IzZjAzZTBlNmRiYzFlN2QyMDQxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgQ29sb3IgbmF0aXZlSW1hZ2VTaW5nbGVQaXhl
bFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlKQogICAgIHJldHVybiBDb2xv
cihwaXhlbFswXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFsxXSAqIDI1NSAvIHBpeGVsWzNdLCBw
aXhlbFsyXSAqIDI1NSAvIHBpeGVsWzNdLCBwaXhlbFszXSk7CiB9CiAKLXZvaWQgZHJhd05hdGl2
ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUg
bW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQog
ewogICAgIC8vIFN1YnNhbXBsaW5nIG1heSBoYXZlIGdpdmVuIHVzIGFuIGltYWdlIHRoYXQgaXMg
c21hbGxlciB0aGFuIHNpemUoKS4KICAgICBJbnRTaXplIHN1YnNhbXBsZWRJbWFnZVNpemUgPSBu
YXRpdmVJbWFnZVNpemUoaW1hZ2UpOwpAQCAtNzksNyArNzksNyBAQCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29ucwogICAgIGlmIChzdWJzYW1wbGVkSW1hZ2VTaXplICE9IHNyY1NpemUpCiAgICAgICAg
IGFkanVzdGVkU3JjUmVjdCA9IG1hcFJlY3Qoc3JjUmVjdCwgRmxvYXRSZWN0KHsgfSwgc3JjU2l6
ZSksIEZsb2F0UmVjdCh7IH0sIHN1YnNhbXBsZWRJbWFnZVNpemUpKTsKIAotICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRq
dXN0ZWRTcmNSZWN0LCBvcCwgbW9kZSwgb3JpZW50YXRpb24pOworICAgIGNvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLCBzdWJzYW1wbGVkSW1hZ2VTaXplLCBkZXN0UmVjdCwgYWRqdXN0ZWRT
cmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2VzKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggM2Q0M2NmYjQx
MTFlN2I4YmYxZGZiMWIwZTc4MzMyZjY2YTJiMTQ5Ni4uYTYwZjEyNWEwMTEwMzczNmJhNzUxN2Uz
NjNhYTRhOThkNjIxMDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIGRlY29kZWRTaXplQ2hhbmdlZChpbnRlcm5hbFNp
emUudW5jbGFtcGVkQXJlYSgpICogNCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVu
dEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBC
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3Vs
dCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9o
YXNQYWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAt
MjY2LDcgKzI2Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAKICAgICB7CiAgICAgICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3ApOworICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogCiAgICAgICAg
IGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFn
ZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicgdG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJ
bWFnZVJlY3QnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmgKaW5kZXggOWJmMTY3YzQ1NTQyMDE2MGI4YjBmODk3M2E3ZDE3
OTU0ZjY2MTc1NS4uMjdkOWU3ODAwNzk4ZTNlMmQxZGRhMTJlZGZkNWQzNjAxYmZhMzk1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaApAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5z
aWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogICAgIEZsb2F0
U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAg
ICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggYjcx
M2U4NWVmYzQ4NmFlMWFlMWUwZDczMDM2MWQ5YTU0YjI4Yzg4Ny4uZDM5YjY2MmE0YWE4YWI2NDZi
MzMxNzAxMDJkYjZmYzhjZDgyYTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcApAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3VGlsZWRTY2FsZWRJbWFnZSYgaXRlbSkKIH0KIAogI2lm
IFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi1EcmF3TmF0aXZlSW1hZ2U6
OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZl
SW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVt
KEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4KQEAgLTQ5NiwyMyArNDk2LDE3IEBAIERy
YXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpCiAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCiAgICAg
LCBtX2Rlc3RpbmF0aW9uKGRlc3RSZWN0KQogICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCi0jaWYg
VVNFKENHKQotICAgICwgbV9vcChvcCkKLSAgICAsIG1fYmxlbmRNb2RlKGJsZW5kTW9kZSkKLSNl
bmRpZgotICAgICwgbV9vcmllbnRhdGlvbihvcmllbnRhdGlvbikKKyAgICAsIG1fb3B0aW9ucyhv
cHRpb25zKQogewogI2lmICFVU0UoQ0cpCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlKTsKLSAgICBV
TlVTRURfUEFSQU0ob3ApOwotICAgIFVOVVNFRF9QQVJBTShibGVuZE1vZGUpOwogI2VuZGlmCiB9
CiAKIHZvaWQgRHJhd05hdGl2ZUltYWdlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
IGNvbnN0CiB7CiAjaWYgVVNFKENHKQotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKG1faW1h
Z2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBtX3NyY1JlY3QsIG1fb3AsIG1fYmxlbmRN
b2RlLCBtX29yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShtX2ltYWdl
LCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvbiwgbV9zcmNSZWN0LCBtX29wdGlvbnMpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAjZW5kaWYKQEAgLTUyOCw3ICs1MjIsNyBA
QCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRHJh
d05hdGl2ZUltYWdlJiBpdGVtKQogfQogI2VuZGlmCiAKLURyYXdQYXR0ZXJuOjpEcmF3UGF0dGVy
bihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCitEcmF3UGF0dGVybjo6RHJhd1BhdHRl
cm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogICAgIDogRHJhd2luZ0l0ZW0oSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuKQogICAgICwgbV9pbWFnZShpbWFnZSkKICAgICAsIG1fcGF0dGVyblRyYW5z
Zm9ybShwYXR0ZXJuVHJhbnNmb3JtKQpAQCAtNTM2LDE0ICs1MzAsMTMgQEAgRHJhd1BhdHRlcm46
OkRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWMKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCiAgICAgLCBtX3BoYXNl
KHBoYXNlKQogICAgICwgbV9zcGFjaW5nKHNwYWNpbmcpCi0gICAgLCBtX29wKG9wKQotICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7CiB9CiAK
IHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QK
IHsKLSAgICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVzdGluYXRpb24s
IG1fdGlsZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFjaW5nLCBtX29w
LCBtX2JsZW5kTW9kZSk7CisgICAgY29udGV4dC5kcmF3UGF0dGVybihtX2ltYWdlLmdldCgpLCBt
X2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1fcGhhc2UsIG1f
c3BhY2luZywgbV9vcHRpb25zKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKaW5kZXggOGJjY2UxOWIyNGUxZmY1ZjY1YjZiZjQ4Yzk0MTcwYzliN2Uw
MWZiOC4uY2YzY2Y5MjkzMGM0NmRiZTZjNzI5N2E1YTkxY2UyNTEyNWNiYTc2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC02NDEsMTYgKzY0MSwxNiBAQCBwcml2YXRlOgog
I2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBEcmF3TmF0
aXZlSW1hZ2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
RHJhd05hdGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5k
TW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVmPERyYXdO
YXRpdmVJbWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGlt
YWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1h
Z2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAgIEZsb2F0
UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3Qg
ZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6
Ci0gICAgRHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KTsKKyAgICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02NjIsMTkgKzY2Miwx
NSBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3Qg
bV9kZXN0aW5hdGlvbjsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwotI2lmIFVTRShDRykKLSAg
ICBDb21wb3NpdGVPcGVyYXRvciBtX29wOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSNl
bmRpZgotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogI2VuZGlmCiAKIGNsYXNzIERyYXdQYXR0ZXJuIDog
cHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdQYXR0ZXJu
PiBjcmVhdGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENv
bXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIHN0YXRpYyBSZWY8
RHJhd1BhdHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJl
Y3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykp
OwogICAgIH0KIAogICAgIGNvbnN0IEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2UuZ2V0KCk7IH0KQEAgLTY4NSw3ICs2ODEsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNw
YWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3
UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5Nyw4ICs2OTMsNyBA
QCBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UG9pbnQg
bV9waGFzZTsKICAgICBGbG9hdFNpemUgbV9zcGFjaW5nOwotICAgIENvbXBvc2l0ZU9wZXJhdG9y
IG1fb3A7Ci0gICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOworICAgIEltYWdlUGFpbnRpbmdPcHRp
b25zIG1fb3B0aW9uczsKIH07CiAKIC8vIElzIERyYXdpbmdJdGVtIGJlY2F1c2UgdGhlIHNpemUg
b2YgdGhlIHRyYW5zcGFyZW5jeSBsYXllciBpcyBpbXBsaWNpdGx5IHRoZSBjbGlwIGJvdW5kcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlNzk3YTdmZDQy
ODcxOGQzOTcwODAyNTRhMmZmZDYxNjIzY2E2NTRlLi5lMjBmM2VkMTNjYjZlNTVmNzgyZThjOWFk
YzEzMDg3MmRlNmVmMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCkBAIC0xMjcsMTYgKzEyNywxNiBAQCBJbWFnZURyYXdSZXN1bHQgUmVjb3JkZXI6OmRyYXdU
aWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdAogfQogCiAj
aWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQgUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJ
bWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUlt
YWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0m
IG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1h
Z2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5k
TW9kZSwgb3JpZW50YXRpb24pKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2Fz
dDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwg
aW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVt
RXh0ZW50KG5ld0l0ZW0pOwogfQogI2VuZGlmCiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJu
KEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVP
cGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRl
bSA9IGRvd25jYXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdQYXR0ZXJuOjpjcmVhdGUo
aW1hZ2UsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wLCBibGVuZE1vZGUpKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2Fz
dDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KSkpOwogICAgIHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDMxNzk4YzFiMmQ0NzQzNzQ5OGZjMzE1YWMxNjNk
MzVlNDY3NTM3ZjAuLjUxNmQ0ZGY4YzdmZDllYjVmMjk5NzU2NThkZDc2M2QxODAwYzNjZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtOTIsOSArOTIsOSBAQCBw
cml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3Qg
RmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGls
ZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRp
bGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJF
Q1QyRCkKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggYmVmM2FkOTA3MWVlOGM0NTBkOTFmOWJmOTgyNDg1NTU4
MGUxZjQxNy4uZTRkNzI5NTdiMGNkZTg3ZjE3ZmY5NzJmY2I3MTk3Yzk1OWYzMzBlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
Y3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
KmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFp
bnRSZWN0KCkpKTsKLSAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZm
ZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIHsgQ29tcG9zaXRlU291cmNlT3ZlciwgbV9tb2RlIH0pOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKaW5kZXggNTMyM2JlZGFhNTcwYTRiMjEyNDE2OGM0
NjViNDk1MWMwNDFmNDM5YS4uZDU2ZGI0MGMwNDk0ZGIxNzNmMDAxNzQ0YjVjMWJjNGQyYzFhNWEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAKQEAgLTI3MCw4ICsyNzAsOCBAQCB2b2lkIEZFQ29tcG9zaXRl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICBJbnRSZWN0IGFkanVzdGVkRGVzdGlu
YXRpb25SZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gYWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlv
bigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBkZXN0aW5hdGlvblJlY3QgLSBpbi0+
YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICBJbnRSZWN0IHNvdXJjZTJS
ZWN0ID0gZGVzdGluYXRpb25SZWN0IC0gaW4yLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCk7Ci0gICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIs
IGFkanVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2UyUmVjdCk7Ci0gICAgICAgIGZpbHRlckNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWRqdXN0ZWREZXN0aW5hdGlvblJl
Y3QsIHNvdXJjZVJlY3QsIENvbXBvc2l0ZVNvdXJjZUluKTsKKyAgICAgICAgZmlsdGVyQ29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGlu
YXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZTJSZWN0KSk7CisgICAgICAgIGZpbHRlckNvbnRl
eHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KGFkanVzdGVkRGVzdGlu
YXRpb25SZWN0KSwgRmxvYXRSZWN0KHNvdXJjZVJlY3QpLCB7IENvbXBvc2l0ZVNvdXJjZUluIH0p
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGRUNPTVBPU0lURV9PUEVSQVRPUl9P
VVQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHAKaW5kZXggMzVkNmFlOTg5Njc3ODBkYTkxYjNjNTA2MGRkYjYyZTQ4NzNhZWQwMi4uNTgx
Y2EyNmYwMGYwNTY0ZWFjYTY5NWYzYzVhNDg5YWE3MWJmOWEzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtODg1LDE1ICs4
ODUsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2EKICAgICBpZiAoIUdTVF9JU19TQU1QTEUo
bV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBwYWludGluZ09wdGlvbnMoQ29tcG9zaXRlQ29weSk7Ci0gICAgaWYgKG1fcmVuZGVyaW5n
Q2FuQmVBY2NlbGVyYXRlZCkKLSAgICAgICAgcGFpbnRpbmdPcHRpb25zLm1fb3JpZW50YXRpb24g
PSBtX3ZpZGVvU291cmNlT3JpZW50YXRpb247Ci0KICAgICBhdXRvIGdzdEltYWdlID0gSW1hZ2VH
U3RyZWFtZXI6OmNyZWF0ZUltYWdlKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoIWdzdEltYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZShnc3RJbWFnZS0+aW1h
Z2UoKSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwgcGFpbnRpbmdPcHRpb25zKTsKKyAgICBjb250
ZXh0LmRyYXdJbWFnZShnc3RJbWFnZS0+aW1hZ2UoKSwgcmVjdCwgZ3N0SW1hZ2UtPnJlY3QoKSwg
eyBDb21wb3NpdGVDb3B5LCBtX3JlbmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQgPyBtX3ZpZGVvU291
cmNlT3JpZW50YXRpb24gOiBJbWFnZU9yaWVudGF0aW9uKCkgfSk7CiB9CiAKICNpZiBVU0UoR1NU
UkVBTUVSX0dMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcAppbmRleCA1MGUwYzNjN2Q5NzY4MjZiYTdiYjgxODVkMWVlMTQyMTI5
YWRhMDJjLi4xZDJhZjY5ZmQ2ZmE3ODNmMGZjMTY2MWE4NjgwYzJiMTA2OGMxNmExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cApAQCAtNTQ5LDE0ICs1NDksMTQgQEAgSW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXQKICAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1hZ2VJbXBsKGdyYXBoaWNzQ29udGV4
dCgpLCBpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwg
dlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdl
UHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3RydWN0IERyYXdOYXRpdmVJbWFnZSBmaW5hbCA6IFBh
aW50aW5nT3BlcmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHksIGZsb2F0LCBDYWlybzo6U2hhZG93U3Rh
dGU+IHsKKyAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRp
b24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVjdCwgRmxv
YXRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucywgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4g
ewogICAgICAgICB2aXJ0dWFsIH5EcmF3TmF0aXZlSW1hZ2UoKSA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJp
ZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShjb250ZXh0
Rm9yUmVwbGF5KHJlcGxheWVyKSwgYXJnPDA+KCkuZ2V0KCksIGFyZzwxPigpLCBhcmc8Mj4oKSwg
YXJnPDM+KCksIGFyZzw0PigpLCBhcmc8NT4oKSwgYXJnPDY+KCksIGFyZzw3PigpLCBhcmc8OD4o
KSk7CisgICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBsYXko
cmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwg
YXJnPDQ+KCksIGFyZzw1PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChUZXh0
U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU2NywxNyArNTY3LDE3IEBAIHZvaWQgQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFn
ZSwgY29uc3QKIAogICAgIFVOVVNFRF9QQVJBTShpbWFnZVNpemUpOwogICAgIGF1dG8mIHN0YXRl
ID0gZ3JhcGhpY3NDb250ZXh0KCkuc3RhdGUoKTsKLSAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxE
cmF3TmF0aXZlSW1hZ2U+KFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+KGltYWdlLmdldCgpKSwgZGVz
dFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9u
LCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKSkpOworICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJ
bWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2UuZ2V0KCkpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9
CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgc3Ry
dWN0IERyYXdQYXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBB
ZmZpbmVUcmFuc2Zvcm0sIEZsb2F0UG9pbnQsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU+
IHsKKyAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBG
bG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlv
bnM+IHsKICAgICAgICAgdmlydHVhbCB+RHJhd1BhdHRlcm4oKSA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgdm9pZCBleGVjdXRlKFBhaW50aW5nT3BlcmF0aW9uUmVwbGF5JiByZXBsYXllcikgb3ZlcnJp
ZGUKICAgICAgICAgewotICAgICAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKGNvbnRleHRGb3JS
ZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8
Mz4oKSwgYXJnPDQ+KCksIGFyZzw1PigpLCBhcmc8Nj4oKSwgYXJnPDc+KCkpOworICAgICAgICAg
ICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKGNvbnRleHRGb3JSZXBsYXkocmVwbGF5ZXIpLCBhcmc8MD4o
KS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4oKSwgYXJnPDQ+KCksIGFyZzw1Pigp
LCBhcmc8Nj4oKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYg
dHMpIG92ZXJyaWRlCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QK
IAogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1h
Z2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSkKLSAgICAgICAgYXBwZW5kKGNyZWF0ZUNv
bW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIEludFNpemUoaW1hZ2Uuc2l6ZSgp
KSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgY29tcG9zaXRl
T3BlcmF0b3IsIGJsZW5kTW9kZSkpOworICAgICAgICBhcHBlbmQoY3JlYXRlQ29tbWFuZDxEcmF3
UGF0dGVybj4oV1RGTW92ZShzdXJmYWNlKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVj
dCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBvcHRpb25zKSk7CiB9CiAKIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBmbG9hdCBib3JkZXJUaGlja25lc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggZGJkNjcyMzE0ODRmOTE4NzIxY2MwYmZk
ZDg2Mzg1ZTdmZTViODlmOS4uODI2MGM0OGFkNzk4Njg0YzZlNTdjMWQ2NmRmYmU2ZDAxMDFjMWY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9j
YWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuaApAQCAtNjcsOCArNjcsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkltYWdlRHJh
d1Jlc3VsdCBkcmF3SW1hZ2UoV2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3
VGlsZWRJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFn
ZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkltYWdl
OjpUaWxlUnVsZSwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBXZWJDb3JlOjpJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgV2Vi
Q29yZTo6Q29tcG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSwgV2ViQ29yZTo6SW1h
Z2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpJ
bWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVy
YXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlID0gV2ViQ29yZTo6QmxlbmRNb2RlOjpOb3JtYWwpIG92
ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdMaW5lKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGly
ZWN0MkRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCmluZGV4IDI2NjE4ZTdmMzVmNmQ2MmY3YjdkZTFmNmJm
NmEyZjY0Yzc5NmU0Y2YuLmNjOWY5ZDEyMjdmYjVhNWE2NmY3MzZhY2IyNmY0ZTgzN2RmNTMyNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3Qy
RE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBkcmF3R2x5
cGhzKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxT
b3VyY2UmIGZpbGwKIH0KIAogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRE
aXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxw
aGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRtYXAqIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNo
YWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZlSW1hZ2VTaXplID0gYml0bWFwU2l6ZShpbWFn
ZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CkBAIC03NTksMTAgKzc1
OSwxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxh
dGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIGltYWdlU2l6ZSA9IGJpdG1hcFNpemUoZGV2aWNlQml0bWFwLmdldCgpKTsKLSAgICBkcmF3
TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBkZXZpY2VCaXRtYXAuZ2V0KCksIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVu
dGF0aW9uLCBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBnbG9iYWxBbHBoYSwgc2hhZG93U3Rh
dGUpOworICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmljZUJpdG1hcC5n
ZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgZ2xvYmFsQWxwaGEs
IHNoYWRvd1N0YXRlKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0
RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJwb2xhdGlv
blF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxwaGEsIGNv
bnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRm
b3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElEMkQxQml0bWFwKiBpbWFnZSwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMsIGZsb2F0IGdsb2JhbEFscGhhLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUpCiB7
CiAgICAgYXV0byBiaXRtYXBTaXplID0gaW1hZ2UtPkdldFNpemUoKTsKIApAQCAtNzk0LDE2ICs3
OTQsMTYgQEAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBs
YXRmb3JtQ29udGV4dCwgSUQyRDFCaXRtYXAqIGltYWcKICAgICBpZiAoIXNob3VsZFVzZVN1Ymlt
YWdlICYmIGN1cnJIZWlnaHQgPCBpbWFnZVNpemUuaGVpZ2h0KCkpCiAgICAgICAgIGFkanVzdGVk
RGVzdFJlY3Quc2V0SGVpZ2h0KGFkanVzdGVkRGVzdFJlY3QuaGVpZ2h0KCkgKiBjdXJySGVpZ2h0
IC8gaW1hZ2VTaXplLmhlaWdodCgpKTsKIAotICAgIFN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRp
b24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICBT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIC8vIEltYWdlT3Jp
ZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSk7
CiAgICAgY29udGV4dC0+U2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgYWRqdXN0ZWREZXN0
UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KCkpOwogCi0gICAgaWYgKG9yaWVudGF0aW9uICE9
IEltYWdlT3JpZW50YXRpb246Ok5vbmUpIHsKLSAgICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29u
dGV4dCwgb3JpZW50YXRpb24udHJhbnNmb3JtRnJvbURlZmF1bHQoYWRqdXN0ZWREZXN0UmVjdC5z
aXplKCkpKTsKLSAgICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsK
KyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlvbigpICE9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
IHsKKyAgICAgICAgY29uY2F0Q1RNKHBsYXRmb3JtQ29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlv
bigpLnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAg
ICAgIGlmIChvcHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAg
ICAgICAgICAgLy8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5k
IGhlaWdodCBhbHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAg
ICAgIC8vIHRoZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdl
IG5lZWQgdG8gcmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBhZGp1c3RlZERlc3RS
ZWN0ID0gRmxvYXRSZWN0KGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0Lnko
KSwgYWRqdXN0ZWREZXN0UmVjdC5oZWlnaHQoKSwgYWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA2YmI2NDRhMmI2NWUyMzRj
MTVmZTNjZmZmOWViNzM5MTk0NGQ0MWMxLi40NDI1ZmQyNmFiZTg1NDUxZDJjMDMyZjM2YTI2YTU3
ZWUzMWUyYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MSw4
ICs3MSw4IEBAIHB1YmxpYzoKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1h
Z2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1
bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZv
aWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRT
aXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25z
dCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ0dXaW4uY3BwCmluZGV4IDE0MTE5
ZWJmNWEyOWFmNjhjZDU2ZDlmYjA3MzlkNjljOTY2NTQyMjIuLjkzMjNkYTcyNDhmNmY0OTk4MWU0
NTkzODM2ODMyODc5ZGQxZGUyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTUFQIGJtcCwgY29uc3QgSW50U2l6ZSogc2l6
ZSkKICAgICBpZiAoc2l6ZSkKICAgICAgICAgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKGdj
LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0
KSwgKnNpemUsIENvbXBvc2l0ZUNvcHkpOwogICAgIGVsc2UKLSAgICAgICAgZHJhdyhnYywgRmxv
YXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZs
b2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
KSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgICAgICBkcmF3KGdjLCBGbG9hdFJl
Y3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7
IENvbXBvc2l0ZUNvcHkgfSk7CiAKICAgICAvLyBEbyBjbGVhbnVwCiAgICAgQ0dDb250ZXh0UmVs
ZWFzZShjZ0NvbnRleHQpOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9h
dAogICAgICAgICBpZiAoaW1hZ2UgJiYgQ0dJbWFnZUdldEhlaWdodChpbWFnZSkgPT0gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzcmNTaXplLmhlaWdodCgpKSAmJiBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Up
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAgICAgICAgICAg
c2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAgICAgbV9jdXJy
ZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9y
aWVudGF0aW9uOjpOb25lKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIHsgY29t
cG9zaXRlT3AgfSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQg
Qml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQm
IGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXpl
IHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZs
b2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRyYXcoY3R4dCwg
ZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAKaW5kZXggMjRlYzViYzFkOGMyYmI5MjhmYTA1ODU2ZTMzMzQyMmFjNmY1
YzhiMi4uNjhiZjM5N2RlZmIxOGVkMDc3OGU4M2Y2NDJjZDlmMmE1ZGY2ZGIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2lu
LmNwcApAQCAtODEsNyArODEsNyBAQCBib29sIEJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXpl
KEhCSVRNQVAgYm1wLCBjb25zdCBJbnRTaXplKiBzaXplKQogICAgIGlmIChzaXplKQogICAgICAg
ICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBi
bXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7
CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5m
by5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdl
U2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1v
ZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6
Tm9uZSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJt
V2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIAogICAg
IC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdy
YXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXQKICAgICAgICAgaWYgKGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlLmdldCgpKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+
KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZh
Y2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAg
ICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwg
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
LCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQo
KSksIHsgY29tcG9zaXRlT3AgfSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGlj
c0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0CiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTmF0aXZlSW1hZ2VEaXJlY3QyRC5jcHAKaW5kZXggZGY0YzUzOWJlNmE1NWIw
ZGVmZGYzY2Q2YTZmNTc1MTBmNmM3MDZkNi4uZGRhZjYyNDc0MTM5MzI3NDUwMWFiMGEzZGVlM2Ri
YzgxMzM3ZGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcApAQCAtNzgsNyArNzgsNyBAQCBD
b2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjb25zdCBOYXRpdmVJbWFnZVB0
ciYgaW1hZ2UpCiAgICAgcmV0dXJuIENvbG9yKCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBkcmF3TmF0
aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQog
ewogICAgIGF1dG8gcGxhdGZvcm1Db250ZXh0ID0gY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0KaW5kZXggMTQ3
YzJkMGI1YjNmZTk4MTEwYjBmYzNhYzgxZjZiYmQ3NmZhOGFkZC4uNTAyNzk5MGNlNTVlNDYxYjJk
ZDgyYjljMzI5ZTlkOWEzMmY4MGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RyYWdJbWFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
RHJhZ0ltYWdlSU9TLm1tCkBAIC05Niw3ICs5Niw3IEBAIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9u
CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KHJlbmRlcmVyQ29udGV4dC5DR0NvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBpbWFnZVNpemUuaGVpZ2h0KTsKICAg
ICAgICAgY29udGV4dC5zY2FsZSh7IGFkanVzdGVkSW1hZ2VTY2FsZSwgLWFkanVzdGVkSW1hZ2VT
Y2FsZSB9KTsKLSAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KCks
IEltYWdlUGFpbnRpbmdPcHRpb25zKG9yaWVudGF0aW9uKSk7CisgICAgICAgIGNvbnRleHQuZHJh
d0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgpLCB7IG9yaWVudGF0aW9uIH0pOwogICAgIH1dOwog
ICAgIHJldHVybiBpbWFnZUNvcHkuQ0dJbWFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDkwMWM0MTEwZTFjNTZiYTYw
YTRkZDNiYTdiOTNmYWFmNjA0MWNiMzMuLjc0ODJjZTAyMGM5NDEwZjU2ZWIwNjA0ZjNjNTNiZjli
MWJkMjZjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAKICAgICAgICAgICAgIGF1dG8gaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25R
dWFsaXR5KGNvbnRleHQsICppbWFnZSwgJmJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwog
ICAgICAgICAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXco
KmltYWdlLCBwYWludEluZm8pOwotICAgICAgICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4
dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdlb21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9p
bnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgpKSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0
cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVy
LmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsIGludGVy
cG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1Rp
bGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21l
dHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21ldHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNl
U2l6ZSgpLCB7IGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUs
IGludGVycG9sYXRpb24gfSk7CiAgICAgICAgICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURy
YXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
Z0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwogICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hl
ZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKCp0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4
IDkxM2JiNDEzYjk0MmYxZTA2MjZjZjU4YzE0NWFiMzI2YjcxY2MyOTYuLjdhYzA0YjhiYTRmNDE1
MTNiM2ZjYmFmMTkzMWJjZjQ0ODA1Yzk0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQg
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0CiAgICAgICAgIHJldHVybjsKIAogICAgIEludGVycG9sYXRpb25R
dWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250ZXh0
LCBpbWFnZSwgJmltYWdlLCBhbGlnbmVkUmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQuZHJhd0lt
YWdlKGltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMoaW1hZ2VPcmllbnRh
dGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGFs
aWduZWRSZWN0LCB7IGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbiB9KTsKIH0KIAog
dm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRDb250ZW50cyhQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggZjUxZTJmZWIzN2UxZmNmMGZkMGU3OTFhZTY0ZjAz
ZWU4OGEyYTdjOC4uMzkzNWNiNDVhMTRlNmQ3Njg3OWE1ZDcxOGU1MGE0MDVmMzk0OGE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NjksNyArNDY5LDcg
QEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2YKICAgICAgICAgICAgICAgICAgICAgY2VudGVyWSA9
IDA7CiAgICAgICAgICAgICAgICAgaW1hZ2VPZmZzZXQgPSBMYXlvdXRTaXplKGxlZnRCb3JkZXIg
KyBsZWZ0UGFkICsgY2VudGVyWCArIG1pc3NpbmdJbWFnZUJvcmRlcldpZHRoLCB0b3BCb3JkZXIg
KyB0b3BQYWQgKyBjZW50ZXJZICsgbWlzc2luZ0ltYWdlQm9yZGVyV2lkdGgpOwogCi0gICAgICAg
ICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxz
KExheW91dFJlY3QocGFpbnRPZmZzZXQgKyBpbWFnZU9mZnNldCwgaW1hZ2VTaXplKSwgZGV2aWNl
U2NhbGVGYWN0b3IpLCBpbWFnZU9yaWVudGF0aW9uKCkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBh
aW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGltYWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwg
eyBpbWFnZU9yaWVudGF0aW9uKCkgfSk7CiAgICAgICAgICAgICAgICAgZXJyb3JQaWN0dXJlRHJh
d24gPSB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC02MzIsNyArNjMyLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBGbG9hdFJlY3QKICAgICAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBk
YXRlRnJvbVNldHRpbmdzKHNldHRpbmdzKCkpOwogCiAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBk
ZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgIGF1dG8gZHJh
d1Jlc3VsdCA9IHBhaW50SW5mby5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdl
UGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVj
b2RpbmdNb2RlLCBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRv
IGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCB7
IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFn
ZU9yaWVudGF0aW9uKCksIGludGVycG9sYXRpb24gfSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0g
SW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3Vy
Y2UoKS5jYWNoZWRJbWFnZSgpLT5hZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhp
cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4uY3BwCmluZGV4IDBkZmUyODI3NjRmNDA4YjYyMGJlZjVkOWY1OGU4OGE2Y2M3NmMw
ODQuLjRmZTg1ODYyNWM5MjlkODBiZWNhZmVhNjZmMDY0ZTM0MjE4MTI1Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApA
QCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25h
cHNob3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb24gPSBjaG9vc2VJbnRl
cnBvbGF0aW9uUXVhbGl0eShjb250ZXh0LCAqaW1hZ2UsIGltYWdlLCBhbGlnbmVkUmVjdC5zaXpl
KCkpOwotICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIEltYWdlUGFp
bnRpbmdPcHRpb25zKGltYWdlT3JpZW50YXRpb24oKSwgaW50ZXJwb2xhdGlvbikpOworICAgIGNv
bnRleHQuZHJhd0ltYWdlKCppbWFnZSwgYWxpZ25lZFJlY3QsIHsgaW1hZ2VPcmllbnRhdGlvbigp
LCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiBDdXJzb3JEaXJlY3RpdmUgUmVuZGVyU25hcHNob3R0
ZWRQbHVnSW46OmdldEN1cnNvcihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEN1cnNvciYgb3Zl
cnJpZGVDdXJzb3IpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0KaW5kZXggNDRjYjIwMDFjMGJlOGFiNDI3NzZmNTU3NTZlMTQ0MDM3NWMwMTdiYS4uYTQy
Y2U2ZWMyZDY5MzljMDAxNjFmMTc5YmUyNjQ0ZTEyNDI5MjQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtMjI3OCw3ICsyMjc4LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXkoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwKICAgICBpZiAoYWxpZ25lZFBsdWdpblJlY3Qud2lkdGgoKSA8PSAw
IHx8IGFsaWduZWRQbHVnaW5SZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBhbGlnbmVkUGx1Z2luUmVjdCwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29udGV4dC5kcmF3SW1hZ2UoKnNuYXBzaG90LCBh
bGlnbmVkUGx1Z2luUmVjdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCA2YmQ5MTI0YWU0OGIxMDdhNjAzMTg5OTJm
ZjM2Zjc3MmU2MTU5OGZmLi41MjM3ZWRlMjNjMWQ5M2VhYjEyZmRjYWQ4YWE2Y2RkODg5NTk4ZWE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTE3OSw3ICsx
NzksNyBAQCBJbnRTaXplIFNWR0ltYWdlOjpjb250YWluZXJTaXplKCkgY29uc3QKIH0KIAogSW1h
Z2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpv
b20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsCi0gICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKKyAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwpAQCAtMjAz
LDcgKzIwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhd0ZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0CiAKICAgICBmcmFtZVZpZXcoKS0+
c2Nyb2xsVG9GcmFnbWVudChpbml0aWFsRnJhZ21lbnRVUkwpOwogCi0gICAgSW1hZ2VEcmF3UmVz
dWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBjb21wb3NpdGVP
cCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
OjpOb25lKTsKKyAgICBJbWFnZURyYXdSZXN1bHQgcmVzdWx0ID0gZHJhdyhjb250ZXh0LCBkc3RS
ZWN0LCBzY2FsZWRTcmMsIG9wdGlvbnMpOwogCiAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNlcnZl
cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIyMiw3ICsyMjIsNyBAQCBOYXRpdmVJbWFnZVB0
ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250
ZXh0KikKICAgICBpZiAoIWJ1ZmZlcikgLy8gZmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgcmVjdCgp
LCByZWN0KCksIENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGJ1
ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSk7CiAKICAgICAvLyBGSVhNRTogV0soQnVn
IDExMzY1Nyk6IFdlIHNob3VsZCB1c2UgRG9udENvcHlCYWNraW5nU3RvcmUgaGVyZS4KICAgICBy
ZXR1cm4gYnVmZmVyLT5jb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSktPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CkBAIC0yNjUsNyArMjY1LDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1h
Z2U6Om5hdGl2ZUltYWdlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKICNl
bmRpZgogCiB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQgY29u
dGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkwsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIEZsb2F0UmVjdCB6b29tZWRDb250YWluZXJSZWN0ID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgY29udGFpbmVyU2l6ZSk7CiAgICAgem9vbWVkQ29udGFpbmVyUmVjdC5zY2Fs
ZShjb250YWluZXJab29tKTsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3
UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZQogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6
ZS5zaXplKCkpLCAxLCBDb2xvclNwYWNlU1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIp
IC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3
Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJa
b29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVy
UmVjdCwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIGRyYXdG
b3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpv
b20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJS
ZWN0KTsKICAgICBpZiAoY29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZm
ZXItPmNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsKIApAQCAtMjk3LDEwICsyOTcsMTAgQEAgdm9p
ZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0uc2NhbGUo
MSAvIGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgMSAvIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0
KCkpOwogCiAgICAgY29udGV4dC5zZXREcmF3THVtaW5hbmNlTWFzayhmYWxzZSk7Ci0gICAgaW1h
Z2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyY1JlY3QsIHVuc2NhbGVk
UGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUp
OworICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzY2FsZWRTcmNSZWN0
LCB1bnNjYWxlZFBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0K
IAotSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pCitJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZE5vdGhpbmc7CkBAIC0zMDksMTEgKzMwOSwxMSBAQCBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlYwog
ICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcihjb250ZXh0KTsKLSAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3Np
dGVPcCwgYmxlbmRNb2RlKTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRl
eHQuY2xpcChlbmNsb3NpbmdJbnRSZWN0KGRzdFJlY3QpKTsKIAogICAgIGZsb2F0IGFscGhhID0g
Y29udGV4dC5hbHBoYSgpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5j
eUxheWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUg
IT0gQmxlbmRNb2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOworICAgIGJvb2wgY29tcG9zaXRpbmdS
ZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpICE9
IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgb3B0aW9ucy5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGU6
Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3Bh
cmVuY3lMYXllcikgewogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxw
aGEpOwogICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCmluZGV4IDA3NTQyNGZjNzVkYmRlMDk5MTcwZmYzZjZlYmE2ZTZjNzFmZDJlMTUuLjYx
NDU4NTM0MDNiNDc3YWVjNzExYzhkZDYyZjg4MzY1NDk5ZTAyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC05NCwxMCArOTQsOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3RhcnRBbmltYXRpb25UaW1lckZpcmVkKCk7CiAKICAgICBleHBsaWNpdCBTVkdJbWFnZShJ
bWFnZU9ic2VydmVyJik7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bikgZmluYWw7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRTaXplIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpv
b20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0
IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsCi0gICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3Qm
LCBCbGVuZE1vZGUpOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250
YWluZXJTaXplLCBmbG9hdCBjb250YWluZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVu
dFVSTCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5l
clNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJM
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8
U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1lbnQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5jcHAKaW5kZXggY2Y4Y2Mz
ZTVjZWM4ZTgxMmRlNjlhOWY0NGFkYmI3YjA1YzU1YzAwNS4uZDcwYTY0MGM2YTA0OTFlN2UxNjdm
OTRjMTgwZTI3OTFhMzFlYWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCkBAIC0zNCwxNiArMzQsMTUgQEAgRmxvYXRT
aXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gRmxvYXRT
aXplKHJvdW5kZWRJbnRTaXplKHNjYWxlZENvbnRhaW5lclNpemUpKTsKIH0KIAotSW1hZ2VEcmF3
UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LAotICAgIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZUZv
ckNvbnRhaW5lcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICByZXR1cm4gbV9pbWFnZS0+ZHJhd0ZvckNvbnRhaW5l
cihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJh
Z21lbnRVUkwsIGRzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAg
IHJldHVybiBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6
ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVj
dCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwKLSAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
KyAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBtX2ltYWdlLT5kcmF3
UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1fY29udGFpbmVy
Wm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBo
YXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgZHN0UmVjdCwgYmxlbmRNb2RlKTsKKyAgICBtX2lt
YWdlLT5kcmF3UGF0dGVybkZvckNvbnRhaW5lcihjb250ZXh0LCBtX2NvbnRhaW5lclNpemUsIG1f
Y29udGFpbmVyWm9vbSwgbV9pbml0aWFsRnJhZ21lbnRVUkwsIHNyY1JlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBkc3RSZWN0LCBvcHRpb25zKTsKIH0KIAogTmF0aXZlSW1h
Z2VQdHIgU1ZHSW1hZ2VGb3JDb250YWluZXI6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogdGFyZ2V0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFpbmVyLmgKaW5kZXggODY5ZDA5NzFjNWIy
ZmU1ZDQ5NTFkZDYwMzQwYWUzNjNjZjc3NmYwNC4uNTdiMjA0ZDk4M2ZiMDdiMWE3ZWQ2MWExYWZl
YjRlYjdmOGFhMGQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlRm9yQ29udGFpbmVyLmgKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICBt
X2ltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmlu
c2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiAgICAgfQogCi0gICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKSBmaW5hbDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KICAgICBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDQwMDAyY2Y5MzBmY2JjMWQyZGY1MzVmZjMzNjA1MDA5Yjc4OGZmYTIuLjc1YmFiMWMyMDQ4ZGVh
NjlkYWI4NWQ0YWJmN2ZiYzJhMDJjMjNlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0yNjE5LDcgKzI2MTksNyBAQCBz
dGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViUGFnZSYgcGFnZSwgRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgSW50ZQogICAgIGlmICghZ3JhcGhpY3NDb250ZXh0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UmVjdCgwLCAwLCBiaXRtYXBTaXplLndpZHRoKCksIGJpdG1hcFNpemUuaGVpZ2h0KCkpLCByZW5k
ZXJJbWFnZS5pbWFnZU9yaWVudGF0aW9uKCkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0lt
YWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFwU2l6
ZS5oZWlnaHQoKSksIHsgcmVuZGVySW1hZ2UuaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgIGlu
Zm8uaW1hZ2UgPSBzaGFyZWRCaXRtYXA7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377466</attachid>
            <date>2019-08-28 11:47:19 -0700</date>
            <delta_ts>2019-08-28 13:23:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201059-20190828114718.patch</filename>
            <type>text/plain</type>
            <size>159023</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NyBAQAorMjAxOS0wOC0yOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIEFsbCBpbWFn
ZSBkcmF3aW5nIGZ1bmN0aW9ucyBzaG91bGQgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlIEltYWdl
UGFpbnRpbmdPcHRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDEwNTkKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAg
ICAgICAgSW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLS0gQWxsIHRoZSBpbWFnZSBkcmF3aW5nIGZ1
bmN0aW9uIHdpbGwgdGFrZSBhbiBhcmd1bWVudCBvZiB0eXBlCisgICAgICAgICAgIEltYWdlUGFp
bnRpbmdPcHRpb25zIGluc3RlYWQgb2YgcGFzc2luZyBpbmRpdmlkdWFsIG9wdGlvbnMuCisKKyAg
ICAgICAgLS0gSW1hZ2VQYWludGluZ09wdGlvbnMgaXMgbWFkZSBsaWtlIGEgc2V0IG9mIG9wdGlv
bnMuIEl0IGNhbiBiZQorICAgICAgICAgICBpbml0aWFsaXplZCB3aXRoIGFueSBudW1iZXIgb2Yg
b3B0aW9ucyBhbmQgdGhlIG9yZGVyIGRvZXMgbm90IG1hdHRlcgorCisgICAgICAgIC0tIEltYWdl
OjpvcmlnaW5hbFNpemUoKSBpcyBkZWxldGVkIGJlY2F1c2UgaXQgcmV0dXJucyBzaXplKCkgYW5k
IG5vbmUKKyAgICAgICAgICAgb2YgdGhlIEltYWdlIGNvbmNyZXRlIGNsYXNzZXMgb3ZlcnJpZGVz
IHRoaXMgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0lt
YWdlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVGcm9tQnVmZmVyKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpkcmF3SW1hZ2VUb0NvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRE
cmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5l
cmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmF3Q3Jvc3NmYWRlU3ViaW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0
b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3VzdG9tUGFpbnRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRl
ZEltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
ZGllbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d1RpbGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6SW1hZ2VQ
YWludGluZ09wdGlvbnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnM6OnVzZXNEZWZhdWx0SW50ZXJwb2xhdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3SW1hZ2VJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxlZEltYWdlSW1wbCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6ZHJhdyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZTo6ZHJhd1RpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpvcmln
aW5hbFNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnM6OkltYWdlUGFpbnRpbmdPcHRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpjb21wb3NpdGVPcGVyYXRvciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9uczo6YmxlbmRNb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjpkZWNvZGluZ01vZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnM6Om9yaWVudGF0aW9uIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zOjppbnRlcnBvbGF0
aW9uUXVhbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
czo6c2V0T3B0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3U2hhZG93TGF5ZXJCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdTaGFkb3dJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWlybzo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25z
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdD
b25zdW1pbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUlt
YWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RHJhd05hdGl2ZUltYWdlOjpEcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6YXBwbHkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybik6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd1BhdHRlcm46OmFwcGx5IGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJh
d05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0
aW9uUmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdDJEOjpkcmF3TmF0aXZlSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNHV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZUNhaXJvV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpnZXRIQklUTUFQT2ZTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFnZURpcmVjdDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0RyYWdJbWFnZUlPUy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50U25hcHNob3RJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpw
YWludFJlcGxhY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9S
ZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHNob3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFNuYXBzaG90dGVkUGx1Z2luT3ZlcmxheSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3Rm9yQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6bmF0
aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3KToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VG
b3JDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6
OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VGb3JDb250YWluZXI6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuaDoKKwog
MjAxOS0wOC0yOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dI
TFNMXSBJbmxpbmUgdHlwZWRlZidkIHR5cGVzIGR1cmluZyBNZXRhbCBjb2RlIGdlbmVyYXRpb24g
dG8gc2ltcGxpZnkgZ2VuZXJhdGVkIGNvZGUgd2hpbGUgYWxzbyBtYWtpbmcgaXQgZWFzaWVyIHRv
IHJlYWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw2ICsxMDY0LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRnJhbWUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2JzZXJ2ZXIu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaAorICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
NDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTIwODQsNiArMjA4NCw3IEBACiAJCTcyMTQ0MzMyMjIzRUM4
NUYwMEYxMkZGNyAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzIxNDQzMzMy
MjNFQzhCMDAwRjEyRkY3IC8qIFNWR1Byb3BlcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVFNTM2MzIyM0IyQTI0MDBGQkE5NDQgLyogU1ZHUHJv
cGVydHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MjE0NDMzNDIyM0VDOTE2MDBGMTJGRjcgLyogU1ZHUHJvcGVydHlPd25lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTVFRTUzNjAyMjNCMkEyMTAw
RkJBOTQ0IC8qIFNWR1Byb3BlcnR5T3duZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4MjggLyogSW1hZ2VQ
YWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyQzE4QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyNEVE
MzMyMUEzQThCMjMwMEY1RjEzQyAvKiBKU0VYVEJsZW5kTWluTWF4LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRDMzMDFBM0E4QjIzMDBGNUYxM0Mg
LyogSlNFWFRCbGVuZE1pbk1heC5oICovOyB9OwogCQk3MjRFRTU1MDFEQzgwRDdGMDBBOTFGRkIg
LyogQWN0aXZpdHlTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI0RUU1NEUxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjRFRTU1MTFE
QzgwRDg0MDBBOTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjRFRTU0RjFEQzdGMjVCMDBB
OTFGRkIgLyogQWN0aXZpdHlTdGF0ZUNoYW5nZU9ic2VydmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0MTksNiArOTQyMCw3IEBACiAJCTcy
N0FGRUQxMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjdBRkVEMjFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFWFRzUkdCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAvKiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJD
MThBM0YyMzBCMDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlUGFpbnRpbmdPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRTQxNzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVYVEZyYWdEZXB0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRGcmFnRGVwdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQ1NTgsNiArMjQ1NjAsNyBAQAog
CQkJCTU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi8sCiAJCQkJQkM3
RjQ0QTcwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIuaCAqLywKIAkJCQlBODc0OEQ2
NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovLAorCQkJCTcyQzE4QTNG
MjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovLAogCQkJCTQ5Mjkx
RTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLywKIAkJCQk1NTQ2
NzU3NzFGRDFGQzFBMDAzQjEwQjAgLyogSW1hZ2VTb3VyY2UuY3BwICovLAogCQkJCTU1NDY3NTc4
MUZEMUZDMUEwMDNCMTBCMCAvKiBJbWFnZVNvdXJjZS5oICovLApAQCAtMjk1NzcsNiArMjk1ODAs
NyBAQAogCQkJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM3RjQ0QTgwQjlFMzI0RTAwQTlEMDgxIC8qIEltYWdlT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9y
aWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjI4M0YwRTIzMEIyNjhDMDBGNUQ4Mjgg
LyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUI1MUEyRjNGMTdE
N0QzQUUwMDcyNTE3QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0
bWFwLmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJp
dG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMywxMCArMzIzLDcgQEAgdm9pZCBJbWFnZUJp
dG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeAogICAgIH0KIAogICAgIEZsb2F0UmVjdCBkZXN0
UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
IHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6
ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VG
b3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZhbHVlKCks
IHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVsZWFzZVJldHVyblZh
bHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVz
aXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyA3LiBDcmVhdGUgYSBuZXcgSW1hZ2VCaXRtYXAgb2Jq
ZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7
CkBAIC0zNzMsMTAgKzM3MCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2Ny
aXB0RXgKICAgICB9CiAKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoRmxvYXRQb2ludCgpLCBvdXRw
dXRTaXplKTsKLSAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBwYWludGluZ09wdGlvbnM7Ci0gICAg
cGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkgPSBpbnRlcnBvbGF0aW9uUXVh
bGl0eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KTsKLQotICAgIGJpdG1h
cERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVjdCwgc291
cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBwYWludGluZ09wdGlvbnMpOworICAg
IGJpdG1hcERhdGEtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlRm9yUmVuZGVyLCBkZXN0UmVj
dCwgc291cmNlUmVjdGFuZ2xlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB7IGludGVycG9sYXRpb25R
dWFsaXR5Rm9yUmVzaXplUXVhbGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpIH0pOwogCiAgICAg
Ly8gMy4gQ3JlYXRlIGEgbmV3IEltYWdlQml0bWFwIG9iamVjdC4KICAgICBhdXRvIGltYWdlQml0
bWFwID0gY3JlYXRlKFdURk1vdmUoYml0bWFwRGF0YSkpOwpAQCAtNDg0LDEwICs0NzgsNyBAQCB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4CiAgICAgYXV0byBpbWFnZUZv
clJlbmRlciA9IGV4aXN0aW5nSW1hZ2VCaXRtYXAtPmJ1ZmZlcigpLT5jb3B5SW1hZ2UoKTsKIAog
ICAgIEZsb2F0UmVjdCBkZXN0UmVjdChGbG9hdFBvaW50KCksIG91dHB1dFNpemUpOwotICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zIHBhaW50aW5nT3B0aW9uczsKLSAgICBwYWludGluZ09wdGlvbnMu
bV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGludGVycG9sYXRpb25RdWFsaXR5Rm9yUmVzaXplUXVh
bGl0eShvcHRpb25zLnJlc2l6ZVF1YWxpdHkpOwotCi0gICAgYml0bWFwRGF0YS0+Y29udGV4dCgp
LmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5nbGUucmVs
ZWFzZVJldHVyblZhbHVlKCksIHBhaW50aW5nT3B0aW9ucyk7CisgICAgYml0bWFwRGF0YS0+Y29u
dGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2VGb3JSZW5kZXIsIGRlc3RSZWN0LCBzb3VyY2VSZWN0YW5n
bGUucmVsZWFzZVJldHVyblZhbHVlKCksIHsgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVR
dWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSkgfSk7CiAKICAgICAvLyAzLiBDcmVhdGUgYSBu
ZXcgSW1hZ2VCaXRtYXAgb2JqZWN0LgogICAgIGF1dG8gaW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RG
TW92ZShiaXRtYXBEYXRhKSk7CkBAIC02NTEsMTAgKzY0Miw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6
OmNyZWF0ZUZyb21CdWZmZXIoCiAgICAgfQogCiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0KEZsb2F0
UG9pbnQoKSwgb3V0cHV0U2l6ZSk7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMgcGFpbnRpbmdP
cHRpb25zOwotICAgIHBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50
ZXJwb2xhdGlvblF1YWxpdHlGb3JSZXNpemVRdWFsaXR5KG9wdGlvbnMucmVzaXplUXVhbGl0eSk7
Ci0KLSAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3Qs
IHNvdXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgcGFpbnRpbmdPcHRpb25zKTsK
KyAgICBiaXRtYXBEYXRhLT5jb250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNv
dXJjZVJlY3RhbmdsZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgeyBpbnRlcnBvbGF0aW9uUXVhbGl0
eUZvclJlc2l6ZVF1YWxpdHkob3B0aW9ucy5yZXNpemVRdWFsaXR5KSB9KTsKIAogICAgIGF1dG8g
aW1hZ2VCaXRtYXAgPSBjcmVhdGUoV1RGTW92ZShiaXRtYXBEYXRhKSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU3OSwxNyArMTU3OSwxNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0CiAgICAgfQogCiAgICAgaWYgKHJlY3RDb250YWluc0NhbnZhcyhub3JtYWxpemVkRHN0
UmVjdCkpIHsKLSAgICAgICAgYy0+ZHJhd0ltYWdlKCppbWFnZSwgbm9ybWFsaXplZERzdFJlY3Qs
IG5vcm1hbGl6ZWRTcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcCwgYmxlbmRNb2RlKSk7
CisgICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RSZWN0LCBub3JtYWxp
emVkU3JjUmVjdCwgeyBvcCwgYmxlbmRNb2RlIH0pOwogICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CiAgICAgfSBlbHNlIGlmIChpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKG9wKSkgewog
ICAgICAgICBmdWxsQ2FudmFzQ29tcG9zaXRlZERyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWRE
c3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgb3ApOwogICAgICAgICBkaWREcmF3RW50aXJlQ2Fu
dmFzKCk7CiAgICAgfSBlbHNlIGlmIChvcCA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNs
ZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5vcm1hbGl6ZWREc3RS
ZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3AsIGJsZW5kTW9k
ZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVkRHN0UmVjdCwgbm9y
bWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAgZGlkRHJhd0VudGly
ZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZSgqaW1hZ2UsIG5v
cm1hbGl6ZWREc3RSZWN0LCBub3JtYWxpemVkU3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMo
b3AsIGJsZW5kTW9kZSkpOworICAgICAgICBjLT5kcmF3SW1hZ2UoKmltYWdlLCBub3JtYWxpemVk
RHN0UmVjdCwgbm9ybWFsaXplZFNyY1JlY3QsIHsgb3AsIGJsZW5kTW9kZSB9KTsKICAgICAgICAg
ZGlkRHJhdyhub3JtYWxpemVkRHN0UmVjdCk7CiAgICAgfQogICAgIApAQCAtMTYzNyw3ICsxNjM3
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogI2VuZGlmCiAK
ICAgICBpZiAocmVjdENvbnRhaW5zQ2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJ
bWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJh
d0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9k
ZShzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0
ZWREcmF3SW1hZ2UoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21w
b3NpdGUpOwpAQCAtMTY0NiwxNSArMTY0NiwxNSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIGlmICgmc291cmNlQ2FudmFzID09ICZjYW52YXNCYXNl
KCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvIGNvcHkgPSBidWZmZXItPmNvcHlSZWN0VG9CdWZm
ZXIoc3JjUmVjdCwgQ29sb3JTcGFjZVNSR0IsICpjKSkgewogICAgICAgICAgICAgICAgIGNsZWFy
Q2FudmFzKCk7Ci0gICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5LCBkc3RS
ZWN0LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgSW1hZ2VQYWludGluZ09wdGlvbnMoc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQpKTsKKyAgICAgICAgICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUo
KSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2xlYXJDYW52YXMo
KTsKLSAgICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNS
ZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUo
KS5nbG9iYWxCbGVuZCkpOworICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpidWZmZXIs
IGRzdFJlY3QsIHNyY1JlY3QsIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xv
YmFsQmxlbmQgfSk7CiAgICAgICAgIH0KICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0
LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwg
c3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZl
ciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5n
bG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhkc3RSZWN0KTsKICAgICB9CiAKQEAgLTE3
MzUsMTcgKzE3MzUsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dAogICAgIGNoZWNrT3JpZ2luKCZpbWFnZUJpdG1hcCk7CiAKICAgICBpZiAocmVjdENvbnRhaW5z
Q2FudmFzKGRzdFJlY3QpKSB7Ci0gICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBk
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIo
KmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3Rh
dGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAg
IH0gZWxzZSBpZiAoaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShzdGF0ZSgpLmdsb2JhbENvbXBv
c2l0ZSkpIHsKICAgICAgICAgZnVsbENhbnZhc0NvbXBvc2l0ZWREcmF3SW1hZ2UoKmJ1ZmZlciwg
ZHN0UmVjdCwgc3JjUmVjdCwgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUpOwogICAgICAgICBkaWRE
cmF3RW50aXJlQ2FudmFzKCk7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0
ZSA9PSBDb21wb3NpdGVDb3B5KSB7CiAgICAgICAgIGNsZWFyQ2FudmFzKCk7Ci0gICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5n
T3B0aW9ucyhzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOwor
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAg
ZGlkRHJhd0VudGlyZUNhbnZhcygpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMtPmRyYXdJbWFn
ZUJ1ZmZlcigqYnVmZmVyLCBkc3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhz
dGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCkpOworICAgICAgICBj
LT5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgZHN0UmVjdCwgc3JjUmVjdCwgeyBzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSwgc3RhdGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgZGlkRHJhdyhk
c3RSZWN0KTsKICAgICB9CiAKQEAgLTE4MzQsMTQgKzE4MzQsMTQgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpjb21wbwogICAgIGMtPnJlc3RvcmUoKTsKIH0KIAotc3RhdGlj
IHZvaWQgZHJhd0ltYWdlVG9Db250ZXh0KEltYWdlJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBDb21w
b3NpdGVPcGVyYXRvciBvcCkKK3N0YXRpYyB2b2lkIGRyYXdJbWFnZVRvQ29udGV4dChJbWFnZSYg
aW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyYywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3QsIHNyYywgb3ApOworICAgIGNv
bnRleHQuZHJhd0ltYWdlKGltYWdlLCBkZXN0LCBzcmMsIG9wdGlvbnMpOwogfQogCi1zdGF0aWMg
dm9pZCBkcmF3SW1hZ2VUb0NvbnRleHQoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQorc3RhdGljIHZvaWQgZHJhd0ltYWdlVG9Db250
ZXh0KEltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlciwgZGVzdCwgc3JjLCBvcCk7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2VCdWZmZXIsIGRlc3QsIHNyYywgb3B0aW9ucyk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIFQ+
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZnVsbENhbnZhc0NvbXBvc2l0ZWRE
cmF3SW1hZ2UoVCYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmMsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgVD4gdm9pZCBDYW52YXNSZW5kZXJpbmdDbwogICAgIGJ1ZmZlci0+Y29udGV4dCgp
LnRyYW5zbGF0ZSgtdHJhbnNmb3JtZWRBZGp1c3RlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgYnVm
ZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKGNyb3BwZWRPZmZzZXQpOwogICAgIGJ1ZmZlci0+Y29u
dGV4dCgpLmNvbmNhdENUTShlZmZlY3RpdmVUcmFuc2Zvcm0pOwotICAgIGRyYXdJbWFnZVRvQ29u
dGV4dChpbWFnZSwgYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkRGVzdCwgc3JjLCBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICBkcmF3SW1hZ2VUb0NvbnRleHQoaW1hZ2UsIGJ1ZmZlci0+Y29u
dGV4dCgpLCBhZGp1c3RlZERlc3QsIHNyYywgeyBDb21wb3NpdGVTb3VyY2VPdmVyIH0pOwogCiAg
ICAgY29tcG9zaXRlQnVmZmVyKCpidWZmZXIsIGJ1ZmZlclJlY3QsIG9wKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHJl
dmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1h
cEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIEVuY29kZWREYXRh
U3RhdHVzIEJpdG1hcEltYWdlOjpkYXRhQ2hhbmcKICAgICBtX2N1cnJlbnRGcmFtZURlY29kaW5n
U3RhdHVzID0gRGVjb2RpbmdTdGF0dXM6OkludmFsaWQ7CiAgICAgcmV0dXJuIG1fc291cmNlLT5k
YXRhQ2hhbmdlZChkYXRhKCksIGFsbERhdGFSZWNlaXZlZCk7CiB9Ci0gICAgCisKIHZvaWQgQml0
bWFwSW1hZ2U6OnNldEN1cnJlbnRGcmFtZURlY29kaW5nU3RhdHVzSWZOZWNlc3NhcnkoRGVjb2Rp
bmdTdGF0dXMgZGVjb2RpbmdTdGF0dXMpCiB7CiAgICAgLy8gV2hlbiBuZXcgZGF0YSBpcyByZWNl
aXZlZCwgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyBpcyBzZXQgdG8gRGVjb2RpbmdTdGF0
dXM6OkludmFsaWQKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIEJpdG1hcEltYWdlOjpub3RTb2xp
ZENvbG9yKCkKIH0KICNlbmRpZgogCi1JbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgbW9k
ZSwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bikKK0ltYWdlRHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKGRlc3RS
ZWN0LmlzRW1wdHkoKSB8fCBzcmNSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEltYWdl
RHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKQEAgLTE5Niw3ICsxOTYsNyBAQCBJbWFnZURyYXdSZXN1
bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgTE9HKEltYWdlcywgIkJpdG1hcEltYWdl
OjolcyAtICVwIC0gdXJsOiAlcyBbc3Vic2FtcGxpbmdMZXZlbCA9ICVkIHNjYWxlRmFjdG9yRm9y
RHJhd2luZyA9ICglLjRmLCAlLjRmKV0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U3Vic2Ft
cGxpbmdMZXZlbCksIHNjYWxlRmFjdG9yRm9yRHJhd2luZy53aWR0aCgpLCBzY2FsZUZhY3RvckZv
ckRyYXdpbmcuaGVpZ2h0KCkpOwogCiAgICAgTmF0aXZlSW1hZ2VQdHIgaW1hZ2U7Ci0gICAgaWYg
KGRlY29kaW5nTW9kZSA9PSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91cykgeworICAgIGlmIChv
cHRpb25zLmRlY29kaW5nTW9kZSgpID09IERlY29kaW5nTW9kZTo6QXN5bmNocm9ub3VzKSB7CiAg
ICAgICAgIEFTU0VSVCghY2FuQW5pbWF0ZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRG
cmFtZSB8fCBtX2FuaW1hdGlvbkZpbmlzaGVkKTsKIApAQCAtMjE2LDcgKzIxNiw3IEBAIEltYWdl
RHJhd1Jlc3VsdCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGkKIAogICAgICAgICBpZiAoIWZyYW1l
SGFzRGVjb2RlZE5hdGl2ZUltYWdlQ29tcGF0aWJsZVdpdGhPcHRpb25zQXRJbmRleChtX2N1cnJl
bnRGcmFtZSwgbV9jdXJyZW50U3Vic2FtcGxpbmdMZXZlbCwgRGVjb2RpbmdPcHRpb25zKERlY29k
aW5nTW9kZTo6QXN5bmNocm9ub3VzKSkpIHsKICAgICAgICAgICAgIGlmIChtX3Nob3dEZWJ1Z0Jh
Y2tncm91bmQpCi0gICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRl
c3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcCk7Cisg
ICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xv
cihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9w
ZXJhdG9yKCkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCkBAIC0y
MjcsNyArMjI3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQog
ICAgICAgICBBU1NFUlRfSU1QTElFUyhzdGF0dXMgPT0gU3RhcnRBbmltYXRpb25TdGF0dXM6OkRl
Y29kaW5nQWN0aXZlLCAoIW1fY3VycmVudEZyYW1lICYmICFtX3JlcGV0aXRpb25zQ29tcGxldGUp
IHx8IGZyYW1lSGFzRnVsbFNpemVOYXRpdmVJbWFnZUF0SW5kZXgobV9jdXJyZW50RnJhbWUsIG1f
Y3VycmVudFN1YnNhbXBsaW5nTGV2ZWwpKTsKIAogICAgICAgICBpZiAoc3RhdHVzID09IFN0YXJ0
QW5pbWF0aW9uU3RhdHVzOjpEZWNvZGluZ0FjdGl2ZSAmJiBtX3Nob3dEZWJ1Z0JhY2tncm91bmQp
IHsKLSAgICAgICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0LCBkZXN0UmVjdCwgQ29s
b3IoQ29sb3I6OnllbGxvdykuY29sb3JXaXRoQWxwaGEoMC41KSwgb3ApOworICAgICAgICAgICAg
ZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93
KS5jb2xvcldpdGhBbHBoYSgwLjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI0NSw3ICsy
NDUsNyBAQCBJbWFnZURyYXdSZXN1bHQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpCiAgICAgICAg
IH0gZWxzZSBpZiAoZnJhbWVJc0JlaW5nRGVjb2RlZCkgewogICAgICAgICAgICAgLy8gRklYTUU6
IGluc3RlYWQgb2Ygc2hvd2luZyB0aGUgeWVsbG93IHJlY3RhbmdsZSBhbmQgcmV0dXJuaW5nIHdl
IG5lZWQgdG8gd2FpdCBmb3IgdGhpcyBmcmFtZSB0byBmaW5pc2ggZGVjb2RpbmcuCiAgICAgICAg
ICAgICBpZiAobV9zaG93RGVidWdCYWNrZ3JvdW5kKSB7Ci0gICAgICAgICAgICAgICAgZmlsbFdp
dGhTb2xpZENvbG9yKGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xv
cldpdGhBbHBoYSgwLjUpLCBvcCk7CisgICAgICAgICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9y
KGNvbnRleHQsIGRlc3RSZWN0LCBDb2xvcihDb2xvcjo6eWVsbG93KS5jb2xvcldpdGhBbHBoYSgw
LjUpLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICAgICAgICAgIExPRyhJ
bWFnZXMsICJCaXRtYXBJbWFnZTo6JXMgLSAlcCAtIHVybDogJXMgW3dhaXRpbmcgZm9yIGFzeW5j
IGRlY29kaW5nIHRvIGZpbmlzaF0iLCBfX0ZVTkNUSU9OX18sIHRoaXMsIHNvdXJjZVVSTCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nOwpAQCAtMjY0LDE0ICsyNjQsMTUg
QEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaQogICAgIEFTU0VSVChp
bWFnZSk7CiAgICAgQ29sb3IgY29sb3IgPSBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKTsKICAgICBp
ZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIGZpbGxXaXRoU29saWRDb2xvcihjb250ZXh0
LCBkZXN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGNvbnRl
eHQsIGRlc3RSZWN0LCBjb2xvciwgb3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBpZiAob3JpZW50YXRpb24gPT0gSW1hZ2VP
cmllbnRhdGlvbjo6RnJvbUltYWdlKQotICAgICAgICBvcmllbnRhdGlvbiA9IGZyYW1lT3JpZW50
YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKTsKKyAgICBpZiAob3B0aW9ucy5vcmllbnRhdGlv
bigpID09IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkKKyAgICAgICAgZHJhd05hdGl2ZUlt
YWdlKGltYWdlLCBjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgSW50U2l6ZShzaXplKCkpLCB7
IG9wdGlvbnMsIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KG1fY3VycmVudEZyYW1lKSB9KTsKKyAg
ICBlbHNlCisgICAgICAgIGRyYXdOYXRpdmVJbWFnZShpbWFnZSwgY29udGV4dCwgZGVzdFJlY3Qs
IHNyY1JlY3QsIEludFNpemUoc2l6ZSgpKSwgb3B0aW9ucyk7CiAKLSAgICBkcmF3TmF0aXZlSW1h
Z2UoaW1hZ2UsIGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBJbnRTaXplKHNpemUoKSksIG9w
LCBtb2RlLCBvcmllbnRhdGlvbik7CiAgICAgbV9jdXJyZW50RnJhbWVEZWNvZGluZ1N0YXR1cyA9
IGZyYW1lRGVjb2RpbmdTdGF0dXNBdEluZGV4KG1fY3VycmVudEZyYW1lKTsKIAogICAgIGlmIChp
bWFnZU9ic2VydmVyKCkpCkBAIC0yODAsNyArMjgxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEJpdG1h
cEltYWdlOjpkcmF3KEdyYXBoaQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKHRpbGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjkwLDcg
KzI5MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICAg
ICAgaWYgKG1fY3VycmVudEZyYW1lRGVjb2RpbmdTdGF0dXMgPT0gRGVjb2RpbmdTdGF0dXM6Oklu
dmFsaWQpCiAgICAgICAgICAgICBtX3NvdXJjZS0+ZGVzdHJveUluY29tcGxldGVEZWNvZGVkRGF0
YSgpOwogICAgICAgICAKLSAgICAgICAgSW1hZ2U6OmRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0
LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgICAgIEltYWdlOjpkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5z
Zm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgICAgICBtX2N1cnJlbnRGcmFtZURl
Y29kaW5nU3RhdHVzID0gZnJhbWVEZWNvZGluZ1N0YXR1c0F0SW5kZXgobV9jdXJyZW50RnJhbWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzA1LDcgKzMwNiw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAgICAgICAgLy8gVGVtcG9yYXJpbHkgcmVz
ZXQgaW1hZ2Ugb2JzZXJ2ZXIsIHdlIGRvbid0IHdhbnQgdG8gcmVjZWl2ZSBhbnkgY2hhbmdlSW5S
ZWN0KCkgY2FsbHMgZHVlIHRvIHRoaXMgcmVsYXlvdXQuCiAgICAgICAgIHNldEltYWdlT2JzZXJ2
ZXIobnVsbHB0cik7CiAKLSAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGlsZVJlY3Qs
IHRpbGVSZWN0LCBvcCwgYmxlbmRNb2RlLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICAgICAgZHJhdyhidWZmZXItPmNvbnRleHQoKSwgdGls
ZVJlY3QsIHRpbGVSZWN0LCB7IG9wdGlvbnMsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb246Ok5vbmUgfSk7CiAKICAgICAgICAgc2V0SW1hZ2VPYnNlcnZlcihvYnNl
cnZlcik7CiAgICAgICAgIGJ1ZmZlci0+Y29udmVydFRvTHVtaW5hbmNlTWFzaygpOwpAQCAtMzE2
LDcgKzMxNyw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28KICAg
ICB9CiAKICAgICBjdHh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAgICBtX2NhY2hl
ZEltYWdlLT5kcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHRyYW5zZm9ybSwg
cGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOworICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQ
YXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgdHJhbnNmb3JtLCBwaGFzZSwgc3BhY2lu
Zywgb3B0aW9ucyk7CiB9CiAKIGJvb2wgQml0bWFwSW1hZ2U6OnNob3VsZEFuaW1hdGUoKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsOCArMTYxLDggQEAgcHJvdGVj
dGVkOgogICAgIC8vIHxkZXN0cm95QWxsfCBhbG9uZy4KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YUlmTmVjZXNzYXJ5KGJvb2wgZGVzdHJveUFsbCA9IHRydWUpOwogCi0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0
dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29t
cG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsK
KyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKFdJTikKICAgICB2b2lk
IGRyYXdGcmFtZU1hdGNoaW5nU291cmNlU2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEludFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9y
KSBvdmVycmlkZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkocmV2aXNp
b24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMCArNTAsMjEgQEAgc3Rh
dGljIHZvaWQgZHJhd0Nyb3NzZmFkZVN1YmltYWdlKEdyYXBoaQogICAgIGJvb2wgdXNlVHJhbnNw
YXJlbmN5TGF5ZXIgPSBpbWFnZS5pc1NWR0ltYWdlKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgCi0gICAgQ29tcG9zaXRlT3BlcmF0
b3IgZHJhd0ltYWdlT3BlcmF0aW9uID0gb3BlcmF0aW9uOworCisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMgb3B0aW9uczsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAg
ICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAgICBjb250
ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7Ci0gICAgICAgIGRyYXdJbWFnZU9w
ZXJhdGlvbiA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgfSBlbHNlCisgICAgfSBlbHNlIHsK
ICAgICAgICAgY29udGV4dC5zZXRBbHBoYShvcGFjaXR5KTsKKyAgICAgICAgb3B0aW9ucyA9IHsg
b3BlcmF0aW9uIH07CisgICAgfQogCiAgICAgaWYgKHRhcmdldFNpemUgIT0gaW1hZ2VTaXplKQog
ICAgICAgICBjb250ZXh0LnNjYWxlKHRhcmdldFNpemUgLyBpbWFnZVNpemUpOwogCi0gICAgY29u
dGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIEludFBvaW50KCksIEltYWdlUGFpbnRpbmdPcHRpb25zKGRy
YXdJbWFnZU9wZXJhdGlvbikpOworICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBJbnRQb2lu
dCgpLCBvcHRpb25zKTsKIAogICAgIGlmICh1c2VUcmFuc3BhcmVuY3lMYXllcikKICAgICAgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOwpAQCAtODYsMTAgKzg3LDEwIEBAIHZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdDcm9zc2YKICAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3Np
dGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KQorSW1hZ2VEcmF3UmVzdWx0IENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAg
IEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCks
IG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogICAgIGNvbnRleHQuY2xpcChkc3RSZWN0KTsKICAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkpOwogICAgIGlmIChkc3RSZWN0LnNp
emUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTEwMCw3ICsxMDEsNyBAQCBJbWFnZURyYXdSZXN1
bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6CiAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkRHJhdzsKIH0KIAotdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKQEAgLTExMSw3ICsxMTIsNyBAQCB2b2lkIENy
b3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVyCiAgICAgZHJhd0Nyb3NzZmFkZShncmFw
aGljc0NvbnRleHQpOwogCiAgICAgLy8gVGlsZSB0aGUgaW1hZ2UgYnVmZmVyIGludG8gdGhlIGNv
bnRleHQuCi0gICAgaW1hZ2VCdWZmZXItPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNy
Y1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZlci0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQog
CiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBvdmVycmlkZTsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgb3ZlcnJpZGU7CiAKICAgICBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZShJbWFn
ZSYgZnJvbUltYWdlLCBJbWFnZSYgdG9JbWFnZSwgZmxvYXQgcGVyY2VudGFnZSwgY29uc3QgRmxv
YXRTaXplJiBjcm9zc2ZhZGVTaXplLCBjb25zdCBGbG9hdFNpemUmKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTAgKzE3MCwxMCBA
QCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZG9DdXN0CiAgICAgcmV0dXJuIElt
YWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50
SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZGVzdENvbnRleHQpOwot
ICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRN
b2RlKTsKKyAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBkZXN0Q29udGV4dC5j
bGlwKGRlc3RSZWN0KTsKICAgICBkZXN0Q29udGV4dC50cmFuc2xhdGUoZGVzdFJlY3QubG9jYXRp
b24oKSk7CiAgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAgLTE4
Myw3ICsxODMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhdyhHCiB9
CiAKIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCi0gICAgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCisgICAgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gQWxsb3cgdGhlIGdlbmVyYXRvciB0byBw
cm92aWRlIHZpc3VhbGx5LWVxdWl2YWxlbnQgdGlsaW5nIHBhcmFtZXRlcnMgZm9yIGJldHRlciBw
ZXJmb3JtYW5jZS4KICAgICBGbG9hdFNpemUgYWRqdXN0ZWRTaXplID0gc2l6ZSgpOwpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAg
ICBpZiAoZGVzdENvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5j
b252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKLSAgICBidWZmZXItPmRyYXdQYXR0ZXJuKGRlc3RD
b250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBhdHRlcm5DVE0sIHBo
YXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBidWZmZXItPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBh
dHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICBkZXN0Q29udGV4dC5zZXRE
cmF3THVtaW5hbmNlTWFzayhmYWxzZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21QYWludEltYWdlLmgJKHJldmlzaW9uIDI0OTIw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbVBhaW50SW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsOCBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VE
cmF3UmVzdWx0IGRvQ3VzdG9tUGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXpl
Jik7CiAKLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBmaW5hbDsK
LSAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKSBmaW5hbDsKKyAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pIGZpbmFsOwogCiAgICAgV2Vha1B0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6
UGFpbnREZWZpbml0aW9uPiBtX3BhaW50RGVmaW5pdGlvbjsKICAgICBWZWN0b3I8U3RyaW5nPiBt
X2lucHV0UHJvcGVydGllczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsOSArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGUgPSAwOwotICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sCi0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRl
ID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCiAgICAgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMCArMzks
MTAgQEAgR3JhZGllbnRJbWFnZTo6R3JhZGllbnRJbWFnZShHcmFkaWVudCYgZwogCiBHcmFkaWVu
dEltYWdlOjp+R3JhZGllbnRJbWFnZSgpID0gZGVmYXVsdDsKIAotSW1hZ2VEcmF3UmVzdWx0IEdy
YWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFn
ZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZGVzdENvbnRleHQp
OwotICAgIGRlc3RDb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxl
bmRNb2RlKTsKKyAgICBkZXN0Q29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5j
b21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBkZXN0Q29udGV4
dC5jbGlwKGRlc3RSZWN0KTsKICAgICBkZXN0Q29udGV4dC50cmFuc2xhdGUoZGVzdFJlY3QubG9j
YXRpb24oKSk7CiAgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBzcmNSZWN0LnNpemUoKSkKQEAg
LTUzLDcgKzUzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYWRpZW50SW1hZ2U6OmRyYXcoR3JhcAog
fQogCiB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVz
dENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIC8vIEFsbG93IHRoZSBnZW5lcmF0b3IgdG8gcHJv
dmlkZSB2aXN1YWxseS1lcXVpdmFsZW50IHRpbGluZyBwYXJhbWV0ZXJzIGZvciBiZXR0ZXIgcGVy
Zm9ybWFuY2UuCiAgICAgRmxvYXRTaXplIGFkanVzdGVkU2l6ZSA9IHNpemUoKTsKQEAgLTkxLDcg
KzkxLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogICAgIGRl
c3RDb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKIAogICAgIC8vIFRpbGUgdGhl
IGltYWdlIGJ1ZmZlciBpbnRvIHRoZSBjb250ZXh0LgotICAgIG1fY2FjaGVkSW1hZ2UtPmRyYXdQ
YXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBhZGp1c3RlZFBh
dHRlcm5DVE0sIHBoYXNlLCBzcGFjaW5nLCBjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKKyAgICBt
X2NhY2hlZEltYWdlLT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgYWRqdXN0ZWRQYXR0ZXJuQ1RNLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw4IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgR3JhZGllbnRJbWFnZShHcmFkaWVudCYsIGNvbnN0IEZs
b2F0U2l6ZSYpOwogCi0gICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikg
ZmluYWw7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSkgZmluYWw7
CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgZmluYWw7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSBmaW5hbDsKICAgICBib29sIGlzR3JhZGllbnRJbWFnZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikg
Y29uc3QgZmluYWw7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcxNSw1NSArNzE1LDUwIEBAIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWEKIAogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgRmxvYXRSZWN0IHNyY1JlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5v
cmlnaW5hbFNpemUoKSk7Ci0jZWxzZQogICAgIEZsb2F0UmVjdCBzcmNSZWN0KEZsb2F0UG9pbnQo
KSwgaW1hZ2Uuc2l6ZSgpKTsKLSNlbmRpZgotICAgICAgICAKICAgICByZXR1cm4gZHJhd0ltYWdl
KGltYWdlLCBkZXN0aW5hdGlvbiwgc3JjUmVjdCwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQog
Ci1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQorSW1hZ2VE
cmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKICAgICBp
ZiAobV9pbXBsKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3Rp
bmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1f
aW1wbC0+ZHJhd0ltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIAot
ICAgIEludGVycG9sYXRpb25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZv
clRoaXNTY29wZSgqdGhpcywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9pbnRlcnBvbGF0aW9uUXVh
bGl0eSk7Ci0gICAgcmV0dXJuIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IGltYWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1
YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBv
cHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3KCp0
aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0
IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0IEdyYXBo
aWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYg
dGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAogICAgIGlmIChtX2ltcGwpCi0g
ICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgICAg
ICByZXR1cm4gbV9pbXBsLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJj
ZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlvbnMpOwogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFn
ZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1h
Z2UuZHJhd1RpbGVkKCp0aGlzLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2lu
ZywgaW1hZ2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvciwgaW1hZ2VQYWludGlu
Z09wdGlvbnMubV9ibGVuZE1vZGUsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fZGVjb2RpbmdNb2Rl
LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX29yaWVudGF0aW9uKTsKKyAgICBJbnRlcnBvbGF0aW9u
UXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMs
IG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdU
aWxlZCgqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIG9wdGlv
bnMpOwogfQogCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0
UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3RvciwKLSAgICBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQorICAgIEltYWdlOjpUaWxlUnVsZSBo
UnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCiAgICAgaWYgKG1faW1wbCkKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7Cisg
ICAgICAgIHJldHVybiBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGltYWdlLCBkZXN0aW5hdGlvbiwg
c291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgb3B0aW9ucyk7CiAKICAgICBp
ZiAoaFJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNo
VGlsZSkgewogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJldHVybiBkcmF3
SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsK
KyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0
aW9ucyk7CiAgICAgfQogCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVy
cG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5t
X2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKCp0aGlz
LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9jb21wb3NpdGVPcGVyYXRvcik7CisgICAgSW50ZXJwb2xhdGlv
blF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlz
LCBvcHRpb25zLmludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIHJldHVybiBpbWFnZS5kcmF3
VGlsZWQoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUs
IHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiBpbWFnZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKQEAgLTc3NiwxMyArNzcxLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoSW0KICAgICBkcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIGRlc3RpbmF0aW9u
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2UubG9naWNhbFNpemUoKSkp
LCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IGltYWdlUGFpbnRpbmdPcHRpb25zKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JU
aGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxp
dHkpOwotICAgIGltYWdlLmRyYXcoKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
YmxlbmRNb2RlKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxp
dHkoKSk7CisgICAgaW1hZ2UuZHJhdygqdGhpcywgZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9u
cyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9u
cykKQEAgLTgwMSwxMyArNzk2LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3Vt
aW5nSW1hZ2UKICAgICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZSksIGRl
c3RpbmF0aW9uLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoaW1hZ2VMb2dpY2Fs
U2l6ZSkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWltYWdlKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRp
b25RdWFsaXR5Rm9yVGhpc1Njb3BlKCp0aGlzLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVy
cG9sYXRpb25RdWFsaXR5KTsKLSAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhXVEZNb3Zl
KGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25z
Lm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxlbmRNb2RlKTsK
KyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlG
b3JUaGlzU2NvcGUoKnRoaXMsIG9wdGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAg
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBS
b3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlz
aW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiUGF0
dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgpAQCAtMjEwLDQzICsyMTEsNiBAQCBzdHJ1Y3QgR3JhcGhpY3NDb250ZXh0U3RhdGUg
ewogI2VuZGlmCiB9OwogCi1zdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMgewotICAgIEltYWdl
UGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlIGJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFs
LCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIElu
dGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRl
ZmF1bHQpCi0gICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikK
LSAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCi0gICAgICAgICwgbV9kZWNvZGluZ01v
ZGUoZGVjb2RpbmdNb2RlKQotICAgICAgICAsIG1fb3JpZW50YXRpb24ob3JpZW50YXRpb24pCi0g
ICAgICAgICwgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eShpbnRlcnBvbGF0aW9uUXVhbGl0eSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoSW1hZ2VPcmllbnRhdGlvbiBv
cmllbnRhdGlvbiwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJ
bnRlcnBvbGF0aW9uRGVmYXVsdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKQotICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0g
ICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2Rl
KGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAg
ICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAg
ewotICAgIH0KLQotICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5
IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2RlOjpO
b3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKQotICAgICAgICA6IG1fY29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IpCi0g
ICAgICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotICAgICAgICAsIG1fZGVjb2RpbmdNb2Rl
KGRlY29kaW5nTW9kZSkKLSAgICAgICAgLCBtX29yaWVudGF0aW9uKG9yaWVudGF0aW9uKQotICAg
ICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoaW50ZXJwb2xhdGlvblF1YWxpdHkpCi0gICAg
ewotICAgIH0KLSAgICAKLSAgICBib29sIHVzZXNEZWZhdWx0SW50ZXJwb2xhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlvblF1YWxpdHkgPT0gSW50ZXJwb2xhdGlvbkRlZmF1bHQ7
IH0KLQotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0b3I7Ci0gICAgQmxl
bmRNb2RlIG1fYmxlbmRNb2RlOwotICAgIERlY29kaW5nTW9kZSBtX2RlY29kaW5nTW9kZTsKLSAg
ICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eTsKLX07Ci0KIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZUNoYW5nZSB7CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoKSA9IGRlZmF1bHQ7
CiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykK
QEAgLTM0Nyw3ICszMTEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKSB8fCBV
U0UoRElSRUNUMkQpIHx8IFVTRShDQUlSTykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Q29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246Ok5vbmUp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUlt
YWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKQEAgLTM5
NSwyMyArMzU5LDIyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tl
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBsaW5lV2lkdGgpOwogCi0gICAgV0VCQ09SRV9F
WFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdl
KEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50
aW5nT3B0aW9ucygpKTsKLQotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJj
ZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKLSAg
ICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0
aWxlU2NhbGVGYWN0b3IsCi0gICAgICAgIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxl
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsK
LQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0gSW1hZ2VQYWludGluZ09wdGlvbnMoKSk7Ci0gICAgdm9pZCBkcmF3SW1h
Z2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0gSW1hZ2VQ
YWludGluZ09wdGlvbnMoKSk7Ci0KLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwp
OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwot
ICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4sIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwotICAgIHZvaWQgZHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVz
dGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAg
SW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pOworCisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNlLCBj
b25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxv
YXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6
VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pOworICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICB2b2lkIGRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSk7CiAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
SW1wbC5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyNyAr
MzcsMjcgQEAgR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcAogewogfQog
Ci1JbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd0ltYWdlSW1wbChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRl
eHRJbXBsOjpkcmF3SW1hZ2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xh
dGlvblF1YWxpdHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNv
bnRleHQsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAg
IHJldHVybiBpbWFnZS5kcmF3KGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFp
bnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1f
YmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWlu
dGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9wdGlvbnMu
aW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXcoY29udGV4dCwg
ZGVzdGluYXRpb24sIHNvdXJjZSwgb3B0aW9ucyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFw
aGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZs
b2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09w
dGlvbnMpCitJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0SW1wbDo6ZHJhd1RpbGVkSW1h
Z2VJbXBsKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgSW50ZXJwb2xhdGlvblF1YWxpdHlNYWludGFp
bmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1faW50ZXJwb2xhdGlvblF1YWxpdHkpOwotICAgIHJldHVybiBpbWFnZS5kcmF3
VGlsZWQoY29udGV4dCwgZGVzdGluYXRpb24sIHNvdXJjZSwgdGlsZVNpemUsIHNwYWNpbmcsIGlt
YWdlUGFpbnRpbmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRp
b25zLm1fYmxlbmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2RlY29kaW5nTW9kZSwgaW1h
Z2VQYWludGluZ09wdGlvbnMubV9vcmllbnRhdGlvbik7CisgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHlNYWludGFpbmVyIGludGVycG9sYXRpb25RdWFsaXR5Rm9yVGhpc1Njb3BlKGNvbnRleHQsIG9w
dGlvbnMuaW50ZXJwb2xhdGlvblF1YWxpdHkoKSk7CisgICAgcmV0dXJuIGltYWdlLmRyYXdUaWxl
ZChjb250ZXh0LCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgb3B0aW9u
cyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJ
bWFnZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9h
dFNpemUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGls
ZVJ1bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0
aW9ucykKK0ltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFn
ZUltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hU
aWxlKSB7CiAgICAgICAgIC8vIEp1c3QgZG8gYSBzY2FsZS4KLSAgICAgICAgcmV0dXJuIGRyYXdJ
bWFnZUltcGwoY29udGV4dCwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRp
bmdPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIGRyYXdJbWFnZUltcGwoY29udGV4dCwgaW1hZ2Us
IGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgIH0KIAotICAgIEludGVycG9sYXRp
b25RdWFsaXR5TWFpbnRhaW5lciBpbnRlcnBvbGF0aW9uUXVhbGl0eUZvclRoaXNTY29wZShjb250
ZXh0LCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2ludGVycG9sYXRpb25RdWFsaXR5KTsKLSAgICBy
ZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVT
Y2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0
ZU9wZXJhdG9yKTsKKyAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWluZXIgaW50ZXJwb2xh
dGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoY29udGV4dCwgb3B0aW9ucy5pbnRlcnBvbGF0aW9uUXVh
bGl0eSgpKTsKKyAgICByZXR1cm4gaW1hZ2UuZHJhd1RpbGVkKGNvbnRleHQsIGRlc3RpbmF0aW9u
LCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBvcHRpb25zLmNvbXBvc2l0
ZU9wZXJhdG9yKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1w
bC5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDkgKzczLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdl
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQb2ludCYgc291cmNl
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgSW1hZ2VEcmF3UmVz
dWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAjaWYgVVNFKENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVT
RShESVJFQ1QyRCkKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0
dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzcsMzMgKzEzNywyOCBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3ND
CiAgICAgY3R4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ocHJldmlvdXNPcGVyYXRvcik7CiB9CiAK
LXZvaWQgSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlKQordm9pZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sICBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIW5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCZjdHh0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywg
ZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3As
IGJsZW5kTW9kZSk7CisgICAgY3R4dC5kcmF3UGF0dGVybigqdGhpcywgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAKICAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRo
aXMpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNy
Y1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBEZWNv
ZGluZ01vZGUgZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorSW1h
Z2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3Qg
RmxvYXRTaXplJiBzY2FsZWRUaWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBDb2xvciBjb2xvciA9IHNp
bmdsZVBpeGVsU29saWRDb2xvcigpOwogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBjb2xvciwgb3ApOworICAgICAg
ICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwgZGVzdFJlY3QsIGNvbG9yLCBvcHRpb25zLmNvbXBv
c2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3
OwogICAgIH0KIAogICAgIEFTU0VSVCghaXNCaXRtYXBJbWFnZSgpIHx8IG5vdFNvbGlkQ29sb3Io
KSk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNU
aWxlU2l6ZSA9IG9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9hdFNpemUgaW50cmluc2lj
VGlsZVNpemUgPSBzaXplKCk7Ci0jZW5kaWYKICAgICBpZiAoaGFzUmVsYXRpdmVXaWR0aCgpKQog
ICAgICAgICBpbnRyaW5zaWNUaWxlU2l6ZS5zZXRXaWR0aChzY2FsZWRUaWxlU2l6ZS53aWR0aCgp
KTsKICAgICBpZiAoaGFzUmVsYXRpdmVIZWlnaHQoKSkKQEAgLTE4NCw3ICsxNzksNyBAQCBJbWFn
ZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgIHZpc2libGVTcmNS
ZWN0LnNldFkoKGRlc3RSZWN0LnkoKSAtIG9uZVRpbGVSZWN0LnkoKSkgLyBzY2FsZS5oZWlnaHQo
KSk7CiAgICAgICAgIHZpc2libGVTcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgLyBz
Y2FsZS53aWR0aCgpKTsKICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0
LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBk
ZXN0UmVjdCwgdmlzaWJsZVNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIGRlY29kaW5nTW9kZSwgb3Jp
ZW50YXRpb24pOworICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNy
Y1JlY3QsIG9wdGlvbnMpOwogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0x
OTYsNyArMTkxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpYwog
ICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0WSgoZGVzdFJlY3QueSgpIC0gb25lVGlsZVJl
Y3QueSgpKSAvIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIHZpc2libGVTcmNSZWN0LnNl
dFdpZHRoKDEpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0
LmhlaWdodCgpIC8gc2NhbGUuaGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4
dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29k
aW5nTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVz
dFJlY3QsIHZpc2libGVTcmNSZWN0LCB7IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rp
b24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsK
ICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsxOTksNyBA
QCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2
aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lk
dGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxlLndpZHRoKCkpOwogICAgICAgICAgICAgdmlzaWJs
ZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVz
dFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9k
ZSwgb3JpZW50YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3Qs
IHZpc2libGVTcmNSZWN0LCB7IG9wdGlvbnMsIEJsZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAg
ICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMzYsNyArMjMxLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IElt
YWdlOjpkcmF3VGlsZWQoR3JhcGhpYwogICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBmcm9tUmVj
dCh0b0Zsb2F0UG9pbnQoY3VycmVudFRpbGVSZWN0LmxvY2F0aW9uKCkgLSBvbmVUaWxlUmVjdC5s
b2NhdGlvbigpKSwgY3VycmVudFRpbGVSZWN0LnNpemUoKSk7CiAgICAgICAgICAgICAgICAgZnJv
bVJlY3Quc2NhbGUoMSAvIHNjYWxlLndpZHRoKCksIDEgLyBzY2FsZS5oZWlnaHQoKSk7CiAKLSAg
ICAgICAgICAgICAgICByZXN1bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBvcmllbnRhdGlvbik7CisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCB7IG9wdGlvbnMsIEJs
ZW5kTW9kZTo6Tm9ybWFsIH0pOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSW1hZ2VE
cmF3UmVzdWx0OjpEaWRSZXF1ZXN0RGVjb2RpbmcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgICAgICAgICAgdG9YICs9IGN1cnJlbnRUaWxlUmVjdC53aWR0aCgp
OwpAQCAtMjUwLDE3ICsyNDUsMTcgQEAgSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQo
R3JhcGhpYwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVU
cmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkp
OwogICAgIEZsb2F0UmVjdCB0aWxlUmVjdChGbG9hdFBvaW50KCksIGludHJpbnNpY1RpbGVTaXpl
KTsKLSAgICBkcmF3UGF0dGVybihjdHh0LCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIG9uZVRpbGVSZWN0LmxvY2F0aW9uKCksIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUpOwor
ICAgIGRyYXdQYXR0ZXJuKGN0eHQsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9y
bSwgb25lVGlsZVJlY3QubG9jYXRpb24oKSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAgc3RhcnRB
bmltYXRpb24oKTsKICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogfQogCiAv
LyBGSVhNRTogTWVyZ2Ugd2l0aCB0aGUgb3RoZXIgZHJhd1RpbGVkIGV2ZW50dWFsbHksIHNpbmNl
IHdlIG5lZWQgYSBjb21iaW5hdGlvbiBvZiBib3RoIGZvciBzb21lIHRoaW5ncy4KLUltYWdlRHJh
d1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwgY29uc3QgRmxv
YXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgdGlsZVNjYWxlRmFjdG9yLCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wKQorSW1hZ2VEcmF3UmVzdWx0IEltYWdlOjpkcmF3VGlsZWQoR3JhcGhp
Y3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIFRpbGVSdWxlIGhS
dWxlLCBUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiB7ICAgIAogICAgIENvbG9yIGNvbG9yID0gc2luZ2xlUGl4ZWxTb2xpZENvbG9yKCk7CiAgICAg
aWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBmaWxsV2l0aFNvbGlkQ29sb3IoY3R4dCwg
ZHN0UmVjdCwgY29sb3IsIG9wKTsKKyAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRz
dFJlY3QsIGNvbG9yLCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwogICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwogICAgIH0KICAgICAKQEAgLTMzMCwxOCArMzI1
LDE0IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAg
dlBoYXNlIC09IChkc3RSZWN0LmhlaWdodCgpIC0gc2NhbGVkVGlsZUhlaWdodCkgLyAyOwogCiAg
ICAgRmxvYXRQb2ludCBwYXR0ZXJuUGhhc2UoZHN0UmVjdC54KCkgLSBoUGhhc2UsIGRzdFJlY3Qu
eSgpIC0gdlBoYXNlKTsKLSAgICBkcmF3UGF0dGVybihjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBw
YXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuUGhhc2UsIHNwYWNpbmcsIG9wKTsKKyAgICBkcmF3UGF0
dGVybihjdHh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuUGhh
c2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAgIHN0YXJ0QW5pbWF0aW9uKCk7CiAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKIH0KIAogdm9pZCBJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNI
ZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBpbnRyaW5zaWNSYXRpbyA9IG9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBp
bnRyaW5zaWNSYXRpbyA9IHNpemUoKTsKLSNlbmRpZgogICAgIGludHJpbnNpY1dpZHRoID0gTGVu
Z3RoKGludHJpbnNpY1JhdGlvLndpZHRoKCksIEZpeGVkKTsKICAgICBpbnRyaW5zaWNIZWlnaHQg
PSBMZW5ndGgoaW50cmluc2ljUmF0aW8uaGVpZ2h0KCksIEZpeGVkKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkocmV2aXNpb24gMjQ5MjA5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQCBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7
CiBjbGFzcyBHcmFwaGljc0NvbnRleHRJbXBsOwogY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0
IEltYWdlUGFpbnRpbmdPcHRpb25zOwogc3RydWN0IExlbmd0aDsKIAogLy8gVGhpcyBjbGFzcyBn
ZXRzIG5vdGlmaWVkIHdoZW4gYW4gaW1hZ2UgY3JlYXRlcyBvciBkZXN0cm95cyBkZWNvZGVkIGZy
YW1lcyBhbmQgd2hlbiBpdCBhZHZhbmNlcyBhbmltYXRpb24gZnJhbWVzLgpAQCAtMTE2LDEwICsx
MTcsNiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gc2l6ZSgp
LmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNv
bnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBvcmlnaW5hbFNpemUoKSBjb25zdCB7IHJldHVybiBzaXpl
KCk7IH0KLSNlbmRpZgotCiAgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0
RGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
ICAgICB2aXJ0dWFsIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgLyphbGxEYXRh
UmVjZWl2ZWQqLykgeyByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247IH0KIApAQCAt
MTczLDggKzE3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdka1BpeGJ1ZiogZ2V0R2RrUGl4
YnVmKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sCi0gICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1h
bCk7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIHZpcnR1YWwgYm9vbCBub3RTb2xpZENv
bG9yKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTkwLDkgKzE4Niw5IEBAIHByb3RlY3RlZDoKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgdmlydHVhbCB2b2lkIGRyYXdGcmFtZU1hdGNoaW5nU291cmNl
U2l6ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IElu
dFNpemUmIHNyY1NpemUsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgotICAgIHZpcnR1
YWwgSW1hZ2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgPSAwOwotICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgRmxvYXRTaXplJiB0aWxl
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb24pOwotICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9y
LCBUaWxlUnVsZSBoUnVsZSwgVGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yKTsKKyAg
ICB2aXJ0dWFsIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFNpemUmIHRpbGVT
Y2FsZUZhY3RvciwgVGlsZVJ1bGUgaFJ1bGUsIFRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgLy8gU3VwcG9ydGluZyB0aWxlZCBkcmF3aW5n
CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJldHVy
biBDb2xvcigpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlczNE
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXJEYXRhLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXll
ci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4Q2xhbXBlZEFycmF5Lmg+CkBAIC01
MSw3ICs1Miw3IEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50
UmVjdDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAgCisKIGVudW0gQmFja2luZ1N0b3JlQ29weSB7
CiAgICAgQ29weUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9u
J3QgYWZmZWN0IHRoZSBjb3B5LgogICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVl
bnQgZHJhd3MgbWF5IGFmZmVjdCB0aGUgY29weS4KQEAgLTE1MSwxMCArMTUyLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmbHVzaENvbnRleHQoKSBjb25zdDsKICNlbmRpZgogICAgIAotICAgIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbCk7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZTo6Tm9ybWFsKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAs
IDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CisgICAgdm9p
ZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAotICAgIHN0YXRpYyB2
b2lkIGRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHN0YXRp
YyB2b2lkIGRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CiAKICAgICBpbmxpbmUgdm9pZCBnZW5lcmljQ29udmVydFRvTHVtaW5hbmNl
TWFzaygpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVBh
aW50aW5nT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlUGFpbnRpbmdPcHRpb25zLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VQYWludGluZ09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRGVjb2RpbmdPcHRpb25zLmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnMg
eworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIE9wdGlvbnM+CisgICAgSW1hZ2VQYWludGluZ09w
dGlvbnMoT3B0aW9ucy4uLiBvcHRpb25zKQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKG9wdGlv
bnMuLi4pOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIE92ZXJycmlkZXM+Cisg
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMoY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG90aGVy
LCBPdmVycnJpZGVzLi4uIG92ZXJycmlkZXMpCisgICAgICAgIDogSW1hZ2VQYWludGluZ09wdGlv
bnMob3RoZXIpCisgICAgeworICAgICAgICBzZXRPcHRpb24ob3ZlcnJyaWRlcy4uLik7CisgICAg
fQorCisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMoKSA9IGRlZmF1bHQ7CisgICAgSW1hZ2VQYWlu
dGluZ09wdGlvbnMoY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IGRlZmF1bHQ7CisKKyAg
ICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29tcG9zaXRlT3BlcmF0b3I7IH0KKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibGVuZE1vZGU7IH0KKyAgICBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNvZGluZ01vZGU7IH0KKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnBv
bGF0aW9uUXVhbGl0eTsgfQorCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGaXJz
dCwgdHlwZW5hbWUuLi4gUmVzdD4KKyAgICB2b2lkIHNldE9wdGlvbihGaXJzdCBmaXJzdCwgUmVz
dC4uLiByZXN0KQorICAgIHsKKyAgICAgICAgc2V0T3B0aW9uKGZpcnN0KTsKKyAgICAgICAgc2V0
T3B0aW9uKHJlc3QuLi4pOworICAgIH0KKworICAgIHZvaWQgc2V0T3B0aW9uKENvbXBvc2l0ZU9w
ZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yKSB7IG1fY29tcG9zaXRlT3BlcmF0b3IgPSBjb21wb3Np
dGVPcGVyYXRvcjsgfQorICAgIHZvaWQgc2V0T3B0aW9uKEJsZW5kTW9kZSBibGVuZE1vZGUpIHsg
bV9ibGVuZE1vZGUgPSBibGVuZE1vZGU7IH0KKyAgICB2b2lkIHNldE9wdGlvbihEZWNvZGluZ01v
ZGUgZGVjb2RpbmdNb2RlKSB7IG1fZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlOyB9CisgICAg
dm9pZCBzZXRPcHRpb24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0
aW9uID0gb3JpZW50YXRpb247IH0KKyAgICB2b2lkIHNldE9wdGlvbihJbWFnZU9yaWVudGF0aW9u
OjpPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50YXRpb247
IH0KKyAgICB2b2lkIHNldE9wdGlvbihJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9u
UXVhbGl0eSkgeyBtX2ludGVycG9sYXRpb25RdWFsaXR5ID0gaW50ZXJwb2xhdGlvblF1YWxpdHk7
IH0KKworICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3Np
dGVTb3VyY2VPdmVyIH07CisgICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpO
b3JtYWwgfTsKKyAgICBEZWNvZGluZ01vZGUgbV9kZWNvZGluZ01vZGUgeyBEZWNvZGluZ01vZGU6
OlN5bmNocm9ub3VzIH07CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uIHsgSW1h
Z2VPcmllbnRhdGlvbjo6Tm9uZSB9OworICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHkgeyBJbnRlcnBvbGF0aW9uRGVmYXVsdCB9OworfTsKKworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCwxMSArNDAsMTEgQEAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpO
YW1lZEltYWdlR2VuZQogICAgIHNldENvbnRhaW5lclNpemUoc2l6ZSk7CiB9CiAKLUltYWdlRHJh
d1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkgfHwgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJs
ZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21w
b3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAo
ZHN0UmVjdCk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigpKTsKICAg
ICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCkBAIC01NywxMyArNTcsMTIg
QEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZQogICAgIFVOVVNFRF9Q
QVJBTShjb250ZXh0KTsKICAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BB
UkFNKHNyY1JlY3QpOwotICAgIFVOVVNFRF9QQVJBTShjb21wb3NpdGVPcCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGJsZW5kTW9kZSk7CisgICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwogICAgIHJldHVy
biBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAjZW5kaWYKIH0KIAotdm9pZCBOYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3AsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBV
U0UoTkVXX1RIRU1FKQogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQpOwpAQCAtNzQsMTYgKzczLDE1IEBAIHZv
aWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGUKICAgICBUaGVtZTo6c2luZ2xl
dG9uKCkuZHJhd05hbWVkSW1hZ2UobV9uYW1lLCBncmFwaGljc0NvbnRleHQsIEZsb2F0UmVjdCgw
LCAwLCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSk7CiAKICAgICAvLyBUaWxlIHRo
ZSBpbWFnZSBidWZmZXIgaW50byB0aGUgY29udGV4dC4KLSAgICBpbWFnZUJ1ZmZlci0+ZHJhd1Bh
dHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2Us
IHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOworICAgIGltYWdlQnVmZmVyLT5kcmF3
UGF0dGVybihjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
KyAgICBVTlVTRURfUEFSQU0oZHN0UmVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHNyY1JlY3QpOwog
ICAgIFVOVVNFRF9QQVJBTShwYXR0ZXJuVHJhbnNmb3JtKTsKICAgICBVTlVTRURfUEFSQU0ocGhh
c2UpOwogICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKLSAgICBVTlVTRURfUEFSQU0oZHN0UmVj
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXBvc2l0ZU9wKTsKLSAgICBVTlVTRURfUEFSQU0oYmxl
bmRNb2RlKTsKKyAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJ
bWFnZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBJ
bWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIEltYWdlRHJh
d1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7
IH0pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSBvdmVycmlkZTsKIAogICAgIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZShTdHJpbmcgbmFt
ZSwgY29uc3QgRmxvYXRTaXplJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsOCArMjcsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VQYWludGlu
Z09wdGlvbnMuaCIKIAogI2lmIFVTRShDRykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBA
IC02Niw3ICs2NSw3IEBAIEludFNpemUgbmF0aXZlSW1hZ2VTaXplKGNvbnN0IE5hdGl2ZUltYWcK
IGJvb2wgbmF0aXZlSW1hZ2VIYXNBbHBoYShjb25zdCBOYXRpdmVJbWFnZVB0ciYpOwogQ29sb3Ig
bmF0aXZlSW1hZ2VTaW5nbGVQaXhlbFNvbGlkQ29sb3IoY29uc3QgTmF0aXZlSW1hZ2VQdHImKTsK
IAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbnRTaXpl
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbik7Cit2b2lk
IGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEludFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogdm9pZCBjbGVhck5hdGl2ZUltYWdlU3ViaW1hZ2Vz
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJik7CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw4ICsxNzks
NyBAQCBzdGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJy
ZW50RnJhbWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBz
dXJmYWNlLmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5
ZXJTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwgc2hhZG93U3RhdGUu
Z2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0
aW9uOjpOb25lLAotICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRl
Lmdsb2JhbEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBs
YXRmb3JtQ29udGV4dCwgc3VyZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChs
YXllck9yaWdpbiksIGxheWVyU2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6
ZSksIHsgc2hhZG93U3RhdGUuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0b3IgfSwgc2hhZG93U3RhdGUu
Z2xvYmFsQWxwaGEsIFNoYWRvd1N0YXRlKCkpOwogICAgIH0KIH0KIApAQCAtMTkyLDggKzE5MSw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdTaGFkb3dJbWFnZShQbGF0Zm9ybUNvbnQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZSgpKSB7Ci0gICAgICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIHN1
cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBzaGFkb3dTdGF0ZS5nbG9iYWxDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb246Ok5vbmUsCi0g
ICAgICAgICAgICBJbnRlcnBvbGF0aW9uRGVmYXVsdCwgc2hhZG93U3RhdGUuZ2xvYmFsQWxwaGEs
IFNoYWRvd1N0YXRlKCkpOworICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0
LCBzdXJmYWNlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBzaGFkb3dTdGF0ZS5nbG9iYWxD
b21wb3NpdGVPcGVyYXRvciB9LCBzaGFkb3dTdGF0ZS5nbG9iYWxBbHBoYSwgU2hhZG93U3RhdGUo
KSk7CiAgICAgfQogfQogCkBAIC04NzgsMzcgKzg3NiwzNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xvYmFsQWxw
aGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2ZUltYWdl
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxw
aGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBwbGF0Zm9ybUNvbnRl
eHQuc2F2ZSgpOwogCiAgICAgLy8gU2V0IHRoZSBjb21wb3NpdGluZyBvcGVyYXRpb24uCi0gICAg
aWYgKGNvbXBvc2l0ZU9wZXJhdG9yID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgYmxlbmRNb2Rl
ID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkK
KyAgICBpZiAob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpID09IENvbXBvc2l0ZVNvdXJjZU92
ZXIgJiYgb3B0aW9ucy5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCAmJiAhY2Fpcm9T
dXJmYWNlSGFzQWxwaGEoc3VyZmFjZSkpCiAgICAgICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9z
aXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2RlOjpO
b3JtYWwpOwogICAgIGVsc2UKLSAgICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVy
YXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAg
ICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0
LCBvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMuYmxlbmRNb2RlKCkpOwogCiAg
ICAgRmxvYXRSZWN0IGRzdCA9IGRlc3RSZWN0OwotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKSB7CisgICAgaWYgKG9wdGlvbnMub3JpZW50YXRpb24oKSAhPSBJ
bWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CiAgICAgICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhw
ZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgwLCAwKS4KICAgICAgICAgQ2Fpcm86OnRyYW5zbGF0
ZShwbGF0Zm9ybUNvbnRleHQsIGRzdC54KCksIGRzdC55KCkpOwogICAgICAgICBkc3Quc2V0TG9j
YXRpb24oRmxvYXRQb2ludCgpKTsKLSAgICAgICAgQ2Fpcm86OmNvbmNhdENUTShwbGF0Zm9ybUNv
bnRleHQsIG9yaWVudGF0aW9uLnRyYW5zZm9ybUZyb21EZWZhdWx0KGRzdC5zaXplKCkpKTsKLSAg
ICAgICAgaWYgKG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKKyAgICAgICAgQ2Fp
cm86OmNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFu
c2Zvcm1Gcm9tRGVmYXVsdChkc3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChvcHRpb25zLm9yaWVu
dGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAgLy8gVGhlIGRlc3Rp
bmF0aW9uIHJlY3RhbmdsZSB3aWxsIGhhdmUgaXRzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSBy
ZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2Us
IGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2Ug
aXQgYmFjayBoZXJlLgogICAgICAgICAgICAgZHN0ID0gRmxvYXRSZWN0KGRzdC54KCksIGRzdC55
KCksIGRzdC5oZWlnaHQoKSwgZHN0LndpZHRoKCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAg
ZHJhd1N1cmZhY2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHksIGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJh
d1N1cmZhY2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNlLCBkc3QsIHNyY1JlY3QsIG9wdGlvbnMu
aW50ZXJwb2xhdGlvblF1YWxpdHkoKSwgZ2xvYmFsQWxwaGEsIHNoYWRvd1N0YXRlKTsKICAgICBw
bGF0Zm9ybUNvbnRleHQucmVzdG9yZSgpOwogfQogCi12b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlv
bnMpCiB7CiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoeSB0aGUgc2l6ZSBoYXMgdG8gYmUg
cGFzc2VkIGluIGFzIGFuIEludFJlY3QuCi0gICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4dChw
bGF0Zm9ybUNvbnRleHQuY3IoKSwgc3VyZmFjZSwgc2l6ZSwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCB0b0NhaXJvT3BlcmF0b3IoY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9k
ZSksIGRlc3RSZWN0KTsKKyAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHBsYXRmb3JtQ29u
dGV4dC5jcigpLCBzdXJmYWNlLCBzaXplLCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhh
c2UsIHRvQ2Fpcm9PcGVyYXRvcihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCksIG9wdGlvbnMu
YmxlbmRNb2RlKCkpLCBkZXN0UmVjdCk7CiB9CiAKIHZvaWQgZHJhd1N1cmZhY2UoUGxhdGZvcm1D
b250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVj
dCwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQg
Z2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDgg
KzEzOCw4IEBAIHZvaWQgY2xlYXJSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY28KIAogdm9p
ZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNv
bnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90
PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFncywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYs
IGNvbnN0IENvbG9yJik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgSW50ZXJw
b2xhdGlvblF1YWxpdHksIGZsb2F0LCBjb25zdCBTaGFkb3dTdGF0ZSYpOwotdm9pZCBkcmF3UGF0
dGVybihQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEludFNp
emUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7
Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiwgZmxvYXQsIGNvbnN0IFNoYWRvd1N0YXRlJik7Cit2b2lkIGRyYXdQYXR0
ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgSW50U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwog
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNh
aXJvX3N1cmZhY2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIEludGVy
cG9sYXRpb25RdWFsaXR5LCBmbG9hdCwgY29uc3QgU2hhZG93U3RhdGUmKTsKIAogdm9pZCBkcmF3
UmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25z
dCBDb2xvciYsIFN0cm9rZVN0eWxlLCBjb25zdCBDb2xvciYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3Qo
Y29uc3QgRmxvCiAgICAgQ2Fpcm86OmRyYXdSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwg
Ym9yZGVyVGhpY2tuZXNzLCBzdGF0ZS5maWxsQ29sb3IsIHN0YXRlLnN0cm9rZVN0eWxlLCBzdGF0
ZS5zdHJva2VDb2xvcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1h
Z2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbXBsKSB7
Ci0gICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7
CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEFT
U0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0
ZSgpOwotICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFn
ZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUs
IG9yaWVudGF0aW9uLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5LCBzdGF0ZS5hbHBo
YSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CisgICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFn
ZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgeyBv
cHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhhLCBD
YWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAogLy8gVGhpcyBpcyBvbmx5IHVzZWQgdG8g
ZHJhdyBib3JkZXJzLCBzbyB3ZSBzaG91bGQgbm90IGRyYXcgc2hhZG93cy4KQEAgLTY2MCwxOSAr
NjYwLDE5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUKICAgICBD
YWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwp
IHsKLSAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3BlcmF0b3IsIGJs
ZW5kTW9kZSk7CisgICAgICAgIG1faW1wbC0+ZHJhd1BhdHRlcm4oaW1hZ2UsIGRlc3RSZWN0LCB0
aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
ICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUo
KSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFj
ZS5nZXQoKSwgSW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRl
cm5UcmFuc2Zvcm0sIHBoYXNlLCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKTsKKyAgICAg
ICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKCpwbGF0Zm9ybUNvbnRleHQoKSwgc3VyZmFjZS5nZXQoKSwg
SW50U2l6ZShpbWFnZS5zaXplKCkpLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zv
cm0sIHBoYXNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzYsMTcgKzI3NiwxNyBAQCBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvCiAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dEltcGw6OmRyYXdUaWxl
ZEltYWdlSW1wbChncmFwaGljc0NvbnRleHQoKSwgaW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2Us
IHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3Qg
TmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3
TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBVTlVT
RURfUEFSQU0oaW1hZ2VTaXplKTsKICAgICBhdXRvJiBzdGF0ZSA9IGdyYXBoaWNzQ29udGV4dCgp
LnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwg
aW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRN
b2RlLCBvcmllbnRhdGlvbiwgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgc3RhdGUu
YWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOworICAgIENhaXJvOjpkcmF3TmF0aXZl
SW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwg
eyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5IH0sIHN0YXRlLmFscGhh
LCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1v
ZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UubmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSkKLSAgICAgICAgQ2Fpcm86OmRyYXdQYXR0ZXJuKG1fcGxhdGZvcm1Db250
ZXh0LCBzdXJmYWNlLmdldCgpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxl
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1v
ZGUpOworICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4obV9wbGF0Zm9ybUNvbnRleHQsIHN1cmZh
Y2UuZ2V0KCksIEludFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0
ZXJuVHJhbnNmb3JtLCBwaGFzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvOjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dEltcGxDYWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCShyZXZpc2lv
biAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm8uaAkod29ya2luZyBjb3B5KQpAQCAtNzQsOCArNzQsOCBAQCBw
dWJsaWM6CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgSW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJiwgSW1hZ2U6OlRpbGVSdWxlLCBJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0
ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0U2l6ZSYsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0
JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3Bw
CShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDI0ICszNDQs
MjMgQEAgQmFja2luZ1N0b3JlQ29weSBJbWFnZUJ1ZmZlcjo6ZmFzdENvcHlJbQogICAgIHJldHVy
biBEb250Q29weUJhY2tpbmdTdG9yZTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2Rl
KQordm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyLCBHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGltYWdlQnVmZmVyLT5kcmF3KGRlc3RD
b250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgaW1hZ2VCdWZm
ZXItPmRyYXcoZGVzdENvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAot
dm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAot
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQordm9pZCBJbWFn
ZUJ1ZmZlcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCAgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgQmFja2luZ1N0b3JlQ29weSBjb3B5
TW9kZSA9ICZkZXN0aW5hdGlvbkNvbnRleHQgPT0gJmNvbnRleHQoKSA/IENvcHlCYWNraW5nU3Rv
cmUgOiBEb250Q29weUJhY2tpbmdTdG9yZTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gY29w
eUltYWdlKGNvcHlNb2RlKTsKLSAgICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFn
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wLCBibGVuZE1vZGUs
IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpKTsKKyAg
ICBkZXN0aW5hdGlvbkNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAg
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUpCisgICAgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBjb3B5SW1hZ2UoRG9udENv
cHlCYWNraW5nU3RvcmUpKQotICAgICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCk7Cisg
ICAgICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgcGF0
dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCiB2b2lkIEltYWdl
QnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3Qgc3RkOjphcnJheTx1aW50
OF90LCAyNTY+JiBsb29rVXBUYWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL05hdGl2ZUltYWdlQ2Fpcm8uY3BwCShyZXZp
c2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9O
YXRpdmVJbWFnZUNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBDb2xv
ciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29saWRDb2xvcihjCiAgICAgcmV0dXJuIGNvbG9yRnJv
bVByZW11bHRpcGxpZWRBUkdCKCpwaXhlbCk7CiB9CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKGNv
bnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElu
dFNpemUmIGltYWdlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBv
cmllbnRhdGlvbik7CisgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIGNsZWFyTmF0aXZlSW1h
Z2VTdWJpbWFnZXMoY29uc3QgTmF0aXZlSW1hZ2VQdHImKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzksNyAr
NTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjbwogICAgIGNv
bnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwg
LWltYWdlU2l6ZS5oZWlnaHQoKSk7CiAgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Ob25lKTsKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShj
Z0ltYWdlLCBpbWFnZVNpemUsIGNhbnZhc1JlY3QsIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGlt
YWdlU2l6ZSksIENvbXBvc2l0ZUNvcHkpOworICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKGNn
SW1hZ2UsIGltYWdlU2l6ZSwgY2FudmFzUmVjdCwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1h
Z2VTaXplKSwgeyBDb21wb3NpdGVDb3B5IH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MywxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3Jl
UGxhdGZvcm1TdGEKICAgICBtX2RhdGEtPm1fdXNlclRvRGV2aWNlVHJhbnNmb3JtS25vd25Ub0Jl
SWRlbnRpdHkgPSBmYWxzZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJ
bWFnZShjb25zdCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4mIGltYWdlLCBjb25zdCBGbG9hdFNpemUm
IGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbiBvcmllbnRhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZl
SW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VSZWY+JiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW1wbCkg
ewotICAgICAgICBtX2ltcGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgICAgICBtX2lt
cGwtPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwg
b3B0aW9ucyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvCiAjZW5kaWYKICAgICBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gc3ViSW1hZ2UoaW1hZ2UpOwogCi0gICAgZmxvYXQgY3VyckhlaWdo
dCA9IG9yaWVudGF0aW9uLnVzZXNXaWR0aEFzSGVpZ2h0KCkgPyBDR0ltYWdlR2V0V2lkdGgoc3Vi
SW1hZ2UuZ2V0KCkpIDogQ0dJbWFnZUdldEhlaWdodChzdWJJbWFnZS5nZXQoKSk7CisgICAgZmxv
YXQgY3VyckhlaWdodCA9IG9wdGlvbnMub3JpZW50YXRpb24oKS51c2VzV2lkdGhBc0hlaWdodCgp
ID8gQ0dJbWFnZUdldFdpZHRoKHN1YkltYWdlLmdldCgpKSA6IENHSW1hZ2VHZXRIZWlnaHQoc3Vi
SW1hZ2UuZ2V0KCkpOwogICAgIGlmIChjdXJySGVpZ2h0IDw9IHNyY1JlY3QueSgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTM1OCwxNSArMzU4LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3TmF0aXZlSW1hZ2UoY28KICAgICBhZGp1c3RlZERlc3RSZWN0ID0gcm91bmRUb0RldmljZVBp
eGVscyhhZGp1c3RlZERlc3RSZWN0KTsKICNlbmRpZgogCi0gICAgc2V0UGxhdGZvcm1Db21wb3Np
dGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7CisgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVy
YXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsK
IAogICAgIC8vIEltYWdlT3JpZW50YXRpb24gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGF0ICgw
LCAwKQogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBhZGp1c3RlZERlc3RSZWN0
LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9j
YXRpb24oRmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVu
dGF0aW9uOjpOb25lKSB7Ci0gICAgICAgIENHQ29udGV4dENvbmNhdENUTShjb250ZXh0LCBvcmll
bnRhdGlvbi50cmFuc2Zvcm1Gcm9tRGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOwot
ICAgICAgICBpZiAob3JpZW50YXRpb24udXNlc1dpZHRoQXNIZWlnaHQoKSkgeworICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkgIT0gSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSkgeworICAgICAg
ICBDR0NvbnRleHRDb25jYXRDVE0oY29udGV4dCwgb3B0aW9ucy5vcmllbnRhdGlvbigpLnRyYW5z
Zm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7CisgICAgICAgIGlmIChv
cHRpb25zLm9yaWVudGF0aW9uKCkudXNlc1dpZHRoQXNIZWlnaHQoKSkgewogICAgICAgICAgICAg
Ly8gVGhlIGRlc3RpbmF0aW9uIHJlY3Qgd2lsbCBoYXZlIGl0J3Mgd2lkdGggYW5kIGhlaWdodCBh
bHJlYWR5IHJldmVyc2VkIGZvciB0aGUgb3JpZW50YXRpb24gb2YKICAgICAgICAgICAgIC8vIHRo
ZSBpbWFnZSwgYXMgaXQgd2FzIG5lZWRlZCBmb3IgcGFnZSBsYXlvdXQsIHNvIHdlIG5lZWQgdG8g
cmV2ZXJzZSBpdCBiYWNrIGhlcmUuCiAgICAgICAgICAgICBhZGp1c3RlZERlc3RSZWN0ID0gRmxv
YXRSZWN0KGFkanVzdGVkRGVzdFJlY3QueCgpLCBhZGp1c3RlZERlc3RSZWN0LnkoKSwgYWRqdXN0
ZWREZXN0UmVjdC5oZWlnaHQoKSwgYWRqdXN0ZWREZXN0UmVjdC53aWR0aCgpKTsKQEAgLTQwOCwx
MyArNDA4LDEzIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCoKICAg
ICB9KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBvcCwg
QmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8
fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1faW1wbCkgewotICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxl
bmRNb2RlKTsKKyAgICAgICAgbV9pbXBsLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmCiAgICAgQ0dDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNh
dmVyKGNvbnRleHQpOwogICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgZGVzdFJlY3Qp
OwogCi0gICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3AsIGJsZW5kTW9kZSk7Cisg
ICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRv
cigpLCBvcHRpb25zLmJsZW5kTW9kZSgpKTsKIAogICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShj
b250ZXh0LCBkZXN0UmVjdC54KCksIGRlc3RSZWN0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpKTsK
ICAgICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCAxLCAtMSk7CkBAIC00MzksMTEgKzQzOSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0dGVybihJbWFnZSYKICAgICBmbG9hdCBo
ID0gQ0dJbWFnZUdldEhlaWdodCh0aWxlSW1hZ2UuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IHN1YkltYWdlOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgRmxvYXRT
aXplIGltYWdlU2l6ZSA9IGltYWdlLm9yaWdpbmFsU2l6ZSgpOwotI2Vsc2UKICAgICBGbG9hdFNp
emUgaW1hZ2VTaXplID0gaW1hZ2Uuc2l6ZSgpOwotI2VuZGlmCiAgICAgaWYgKHRpbGVSZWN0LnNp
emUoKSA9PSBpbWFnZVNpemUpCiAgICAgICAgIHN1YkltYWdlID0gdGlsZUltYWdlOwogICAgIGVs
c2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzQsMTEgKzMzNCwxMSBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OmNv
cHlOCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi12b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3Vt
aW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29u
dGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBibGVuZE1vZGUp
Cit2b2lkIEltYWdlQnVmZmVyOjpkcmF3Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIsIEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFD
S0lOR19TVE9SRSkKICAgICBpZiAoIWltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFjZSkgewotICAg
ICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
LCBibGVuZE1vZGUpOworICAgICAgICBpbWFnZUJ1ZmZlci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApA
QCAtMzUxLDEzICszNTEsMTMgQEAgdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyhzdGQ6
OnVuaQogICAgIAogICAgIEZsb2F0UmVjdCBhZGp1c3RlZFNyY1JlY3QgPSBzcmNSZWN0OwogICAg
IGFkanVzdGVkU3JjUmVjdC5zY2FsZShyZXNvbHV0aW9uU2NhbGUpOwotICAgIGRlc3RDb250ZXh0
LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgYmFja2luZ1N0b3JlU2l6ZSwgZGVzdFJlY3Qs
IGFkanVzdGVkU3JjUmVjdCwgb3AsIGJsZW5kTW9kZSk7CisgICAgZGVzdENvbnRleHQuZHJhd05h
dGl2ZUltYWdlKGltYWdlLmdldCgpLCBiYWNraW5nU3RvcmVTaXplLCBkZXN0UmVjdCwgYWRqdXN0
ZWRTcmNSZWN0LCBvcHRpb25zKTsKICNlbHNlCi0gICAgaW1hZ2VCdWZmZXItPmRyYXcoZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlKTsKKyAgICBpbWFnZUJ1ZmZl
ci0+ZHJhdyhkZXN0Q29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogI2VuZGlm
CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBD
b21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2U7CiAgICAg
aWYgKCZkZXN0Q29udGV4dCA9PSAmY29udGV4dCgpIHx8IGRlc3RDb250ZXh0LmlzQWNjZWxlcmF0
ZWRDb250ZXh0KCkpCkBAIC0zNjcsMTAgKzM2NywxMCBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3
KEdyYXBoaWNzQ29udGV4dCYgCiAKICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3Jj
UmVjdDsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUobV9yZXNvbHV0aW9uU2NhbGUpOwotICAg
IGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdT
dG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wLCBibGVuZE1vZGUpOworICAg
IGRlc3RDb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFnZS5nZXQoKSwgbV9kYXRhLmJhY2tpbmdT
dG9yZVNpemUsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIG9wdGlvbnMpOwogfQogCi12b2lk
IEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSBibGVuZE1vZGUpCit2b2lkIEltYWdlQnVmZmVyOjpkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVk
U3JjUmVjdCA9IHNyY1JlY3Q7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKG1fcmVzb2x1dGlv
blNjYWxlKTsKQEAgLTM3OCwxNCArMzc4LDE0IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ28KICAgICBpZiAoIWNvbnRleHQoKS5pc0FjY2VsZXJhdGVkQ29udGV4dCgp
KSB7CiAgICAgICAgIGlmICgmZGVzdENvbnRleHQgPT0gJmNvbnRleHQoKSB8fCBkZXN0Q29udGV4
dC5pc0FjY2VsZXJhdGVkQ29udGV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyPEltYWdl
PiBjb3B5ID0gY29weUltYWdlKENvcHlCYWNraW5nU3RvcmUpKSAvLyBEcmF3aW5nIGludG8gb3Vy
IG93biBidWZmZXIsIG5lZWQgdG8gZGVlcCBjb3B5LgotICAgICAgICAgICAgICAgIGNvcHktPmRy
YXdQYXR0ZXJuKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgYWRqdXN0ZWRTcmNSZWN0LCBwYXR0ZXJu
VHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgICAgICAgICAg
ICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1Jl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChSZWZQdHI8SW1hZ2U+IGltYWdlRm9yUmVuZGVyaW5n
ID0gY29weUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKSkKLSAgICAgICAgICAgICAgICBpbWFn
ZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBhZGp1c3Rl
ZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2Rl
KTsKKyAgICAgICAgICAgICAgICBpbWFnZUZvclJlbmRlcmluZy0+ZHJhd1BhdHRlcm4oZGVzdENv
bnRleHQsIGRlc3RSZWN0LCBhZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNl
LCBzcGFjaW5nLCBvcHRpb25zKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChSZWZQdHI8SW1hZ2U+IGNvcHkgPSBjb3B5SW1hZ2UoQ29weUJhY2tpbmdTdG9yZSkpCi0gICAg
ICAgICAgICBjb3B5LT5kcmF3UGF0dGVybihkZXN0Q29udGV4dCwgZGVzdFJlY3QsIGFkanVzdGVk
U3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBibGVuZE1vZGUp
OworICAgICAgICAgICAgY29weS0+ZHJhd1BhdHRlcm4oZGVzdENvbnRleHQsIGRlc3RSZWN0LCBh
ZGp1c3RlZFNyY1JlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L05hdGl2ZUltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBDb2xvciBuYXRpdmVJbWFnZVNpbmdsZVBpeGVsU29s
aWRDb2xvcihjCiAgICAgcmV0dXJuIENvbG9yKHBpeGVsWzBdICogMjU1IC8gcGl4ZWxbM10sIHBp
eGVsWzFdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVsWzJdICogMjU1IC8gcGl4ZWxbM10sIHBpeGVs
WzNdKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIEJsZW5kTW9kZSBtb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKQordm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgLy8gU3Vic2FtcGxpbmcgbWF5IGhhdmUg
Z2l2ZW4gdXMgYW4gaW1hZ2UgdGhhdCBpcyBzbWFsbGVyIHRoYW4gc2l6ZSgpLgogICAgIEludFNp
emUgc3Vic2FtcGxlZEltYWdlU2l6ZSA9IG5hdGl2ZUltYWdlU2l6ZShpbWFnZSk7CkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHQKICAgICBp
ZiAoc3Vic2FtcGxlZEltYWdlU2l6ZSAhPSBzcmNTaXplKQogICAgICAgICBhZGp1c3RlZFNyY1Jl
Y3QgPSBtYXBSZWN0KHNyY1JlY3QsIEZsb2F0UmVjdCh7IH0sIHNyY1NpemUpLCBGbG9hdFJlY3Qo
eyB9LCBzdWJzYW1wbGVkSW1hZ2VTaXplKSk7CiAKLSAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFn
ZShpbWFnZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwg
b3AsIG1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVJbWFnZShpbWFn
ZSwgc3Vic2FtcGxlZEltYWdlU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9u
cyk7CiB9CiAKIHZvaWQgY2xlYXJOYXRpdmVJbWFnZVN1YmltYWdlcyhjb25zdCBOYXRpdmVJbWFn
ZVB0ciYgaW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6
OnVwZGF0ZUNhY2hlZEltYWdlCiAgICAgZGVjb2RlZFNpemVDaGFuZ2VkKGludGVybmFsU2l6ZS51
bmNsYW1wZWRBcmVhKCkgKiA0KTsKIH0KIAotSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIEJsZW5k
TW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQorSW1hZ2VEcmF3UmVzdWx0IFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1Bh
Z2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CkBAIC0yNjYs
NyArMjY2LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoRwogCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKKyAgICAgICAg
Y29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigp
KTsKIAogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgLy8g
RHJhdyB0aGUgSW1hZ2VCdWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRoZSByZWN0YW5n
bGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAkocmV2aXNpb24gMjQ5MjA5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgm
IGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAg
ICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGlu
Z01vZGUsIEltYWdlT3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIEltYWdlRHJhd1Jlc3VsdCBk
cmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJy
aWRlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0
aXZlLgogICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0K
IH0KIAogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCi1EcmF3TmF0
aXZlSW1hZ2U6OkRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQorRHJhd05hdGl2ZUltYWdlOjpE
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERy
YXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UpCiAjaWYgVVNFKENHKQogICAgIC8v
IEZJWE1FOiBOZWVkIHRvIHN0b3JlIGFuIGltYWdlIGZvciBDYWlyby4KQEAgLTQ5NiwyMyArNDk2
LDE3IEBAIERyYXdOYXRpdmVJbWFnZTo6RHJhd05hdGl2ZUltYWdlKGNvbnN0IE4KICAgICAsIG1f
aW1hZ2VTaXplKGltYWdlU2l6ZSkKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCiAgICAg
LCBtX3NyY1JlY3Qoc3JjUmVjdCkKLSNpZiBVU0UoQ0cpCi0gICAgLCBtX29wKG9wKQotICAgICwg
bV9ibGVuZE1vZGUoYmxlbmRNb2RlKQotI2VuZGlmCi0gICAgLCBtX29yaWVudGF0aW9uKG9yaWVu
dGF0aW9uKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7CiAjaWYgIVVTRShDRykKICAgICBV
TlVTRURfUEFSQU0oaW1hZ2UpOwotICAgIFVOVVNFRF9QQVJBTShvcCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGJsZW5kTW9kZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBEcmF3TmF0aXZlSW1hZ2U6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKIHsKICNpZiBVU0UoQ0cpCi0gICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UobV9pbWFnZSwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb24s
IG1fc3JjUmVjdCwgbV9vcCwgbV9ibGVuZE1vZGUsIG1fb3JpZW50YXRpb24pOworICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKG1faW1hZ2UsIG1faW1hZ2VTaXplLCBtX2Rlc3RpbmF0aW9uLCBt
X3NyY1JlY3QsIG1fb3B0aW9ucyk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsK
ICNlbmRpZgpAQCAtNTI4LDcgKzUyMiw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0KIH0KICNlbmRpZgogCi1EcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oSW1hZ2Um
IGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
IG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorRHJhd1BhdHRlcm46OkRyYXdQYXR0ZXJuKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IERyYXdpbmdJdGVtKEl0ZW1UeXBlOjpEcmF3UGF0
dGVybikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0ocGF0
dGVyblRyYW5zZm9ybSkKQEAgLTUzNiwxNCArNTMwLDEzIEBAIERyYXdQYXR0ZXJuOjpEcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGMKICAgICAsIG1fZGVzdGluYXRpb24oZGVzdFJlY3QpCiAgICAg
LCBtX3BoYXNlKHBoYXNlKQogICAgICwgbV9zcGFjaW5nKHNwYWNpbmcpCi0gICAgLCBtX29wKG9w
KQotICAgICwgbV9ibGVuZE1vZGUoYmxlbmRNb2RlKQorICAgICwgbV9vcHRpb25zKG9wdGlvbnMp
CiB7CiB9CiAKIHZvaWQgRHJhd1BhdHRlcm46OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgY29uc3QKIHsKLSAgICBjb250ZXh0LmRyYXdQYXR0ZXJuKG1faW1hZ2UuZ2V0KCksIG1fZGVz
dGluYXRpb24sIG1fdGlsZVJlY3QsIG1fcGF0dGVyblRyYW5zZm9ybSwgbV9waGFzZSwgbV9zcGFj
aW5nLCBtX29wLCBtX2JsZW5kTW9kZSk7CisgICAgY29udGV4dC5kcmF3UGF0dGVybihtX2ltYWdl
LmdldCgpLCBtX2Rlc3RpbmF0aW9uLCBtX3RpbGVSZWN0LCBtX3BhdHRlcm5UcmFuc2Zvcm0sIG1f
cGhhc2UsIG1fc3BhY2luZywgbV9vcHRpb25zKTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdQYXR0ZXJuJiBpdGVtKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDEsMTYgKzY0MSwxNiBAQCBwcml2YXRlOgogI2lmIFVT
RShDRykgfHwgVVNFKENBSVJPKSB8fCBVU0UoRElSRUNUMkQpCiBjbGFzcyBEcmF3TmF0aXZlSW1h
Z2UgOiBwdWJsaWMgRHJhd2luZ0l0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RHJhd05h
dGl2ZUltYWdlPiBjcmVhdGUoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKKyAgICBzdGF0aWMgUmVmPERyYXdOYXRpdmVJ
bWFnZT4gY3JlYXRlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpOwogICAgIH0KIAogICAgIEZsb2F0UmVjdCBz
b3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGlu
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKIHByaXZhdGU6Ci0gICAg
RHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBz
ZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uKTsKKyAg
ICBEcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUm
IHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02NjIsMTkgKzY2MiwxNSBAQCBw
cml2YXRlOgogICAgIEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV9kZXN0
aW5hdGlvbjsKICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OwotI2lmIFVTRShDRykKLSAgICBDb21w
b3NpdGVPcGVyYXRvciBtX29wOwotICAgIEJsZW5kTW9kZSBtX2JsZW5kTW9kZTsKLSNlbmRpZgot
ICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKyAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBtX29wdGlvbnM7CiB9OwogI2VuZGlmCiAKIGNsYXNzIERyYXdQYXR0ZXJuIDogcHVibGlj
IERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdQYXR0ZXJuPiBjcmVh
dGUoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIHN0YXRpYyBSZWY8RHJhd1Bh
dHRlcm4+IGNyZWF0ZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0
LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRp
bGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucykpOwogICAg
IH0KIAogICAgIGNvbnN0IEltYWdlJiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KQEAgLTY4NSw3ICs2ODEsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIHNwYWNpbmco
KSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBEcmF3UGF0dGVy
bihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJs
ZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKIAogICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTY5Nyw4ICs2OTMsNyBAQCBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIEZsb2F0UG9pbnQgbV9waGFz
ZTsKICAgICBGbG9hdFNpemUgbV9zcGFjaW5nOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fb3A7
Ci0gICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlOworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1f
b3B0aW9uczsKIH07CiAKIC8vIElzIERyYXdpbmdJdGVtIGJlY2F1c2UgdGhlIHNpemUgb2YgdGhl
IHRyYW5zcGFyZW5jeSBsYXllciBpcyBpbXBsaWNpdGx5IHRoZSBjbGlwIGJvdW5kcy4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHJldmlzaW9uIDI0OTIw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDE2ICsxMjcsMTYgQEAg
SW1hZ2VEcmF3UmVzdWx0IFJlY29yZGVyOjpkcmF3VGlsZWRJbWFnZQogfQogCiAjaWYgVVNFKENH
KSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLXZvaWQgUmVjb3JkZXI6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0g
PSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0
ZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3AsIGJsZW5kTW9kZSwgb3Jp
ZW50YXRpb24pKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5n
SXRlbT4oYXBwZW5kSXRlbShEcmF3TmF0aXZlSW1hZ2U6OmNyZWF0ZShpbWFnZSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucykpKTsKICAgICB1cGRhdGVJdGVtRXh0ZW50KG5l
d0l0ZW0pOwogfQogI2VuZGlmCiAKLXZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBv
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBEcmF3aW5nSXRlbSYgbmV3SXRlbSA9IGRvd25j
YXN0PERyYXdpbmdJdGVtPihhcHBlbmRJdGVtKERyYXdQYXR0ZXJuOjpjcmVhdGUoaW1hZ2UsIGRl
c3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wLCBi
bGVuZE1vZGUpKSk7CisgICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5n
SXRlbT4oYXBwZW5kSXRlbShEcmF3UGF0dGVybjo6Y3JlYXRlKGltYWdlLCBkZXN0UmVjdCwgdGls
ZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKSkpOwogICAg
IHVwZGF0ZUl0ZW1FeHRlbnQobmV3SXRlbSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCBwcml2YXRlOgogICAgIEltYWdlRHJhd1Jlc3Vs
dCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRl
OwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNp
emUmIHRpbGVTY2FsZUZhY3RvciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAjaWYgVVNF
KENHKSB8fCBVU0UoQ0FJUk8pIHx8IFVTRShESVJFQ1QyRCkKLSAgICB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAjZW5kaWYK
LSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZs
b2F0IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCShy
ZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgRkVC
bGVuZDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZmls
dGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyMiwgZHJhd2luZ1JlZ2lvbk9m
SW5wdXRJbWFnZShpbjItPmFic29sdXRlUGFpbnRSZWN0KCkpKTsKLSAgICBmaWx0ZXJDb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlU291cmNlT3Zl
ciwgbV9tb2RlKSk7CisgICAgZmlsdGVyQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBkcmF3aW5nUmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKSwg
SW50UmVjdChJbnRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIHsgQ29tcG9z
aXRlU291cmNlT3ZlciwgbV9tb2RlIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwLDggKzI3MCw4
IEBAIHZvaWQgRkVDb21wb3NpdGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgKICAgICAgICAgSW50
UmVjdCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGFic29sdXRl
UGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gZGVz
dGluYXRpb25SZWN0IC0gaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24oKTsKICAgICAg
ICAgSW50UmVjdCBzb3VyY2UyUmVjdCA9IGRlc3RpbmF0aW9uUmVjdCAtIGluMi0+YWJzb2x1dGVQ
YWludFJlY3QoKS5sb2NhdGlvbigpOwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1
ZmZlcigqaW1hZ2VCdWZmZXIyLCBhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCwgc291cmNlMlJlY3Qp
OwotICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFk
anVzdGVkRGVzdGluYXRpb25SZWN0LCBzb3VyY2VSZWN0LCBDb21wb3NpdGVTb3VyY2VJbik7Cisg
ICAgICAgIGZpbHRlckNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlcjIsIEZsb2F0
UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2UyUmVjdCkpOwor
ICAgICAgICBmaWx0ZXJDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIEZsb2F0
UmVjdChhZGp1c3RlZERlc3RpbmF0aW9uUmVjdCksIEZsb2F0UmVjdChzb3VyY2VSZWN0KSwgeyBD
b21wb3NpdGVTb3VyY2VJbiB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRkVD
T01QT1NJVEVfT1BFUkFUT1JfT1VUOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDQsMTUgKzkwNCwxMSBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhCiAgICAgaWYgKCFHU1RfSVNf
U0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW1hZ2VQYWlu
dGluZ09wdGlvbnMgcGFpbnRpbmdPcHRpb25zKENvbXBvc2l0ZUNvcHkpOwotICAgIGlmIChtX3Jl
bmRlcmluZ0NhbkJlQWNjZWxlcmF0ZWQpCi0gICAgICAgIHBhaW50aW5nT3B0aW9ucy5tX29yaWVu
dGF0aW9uID0gbV92aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCiAgICAgYXV0byBnc3RJbWFnZSA9
IEltYWdlR1N0cmVhbWVyOjpjcmVhdGVJbWFnZShtX3NhbXBsZS5nZXQoKSk7CiAgICAgaWYgKCFn
c3RJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1h
Z2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5yZWN0KCksIHBhaW50aW5nT3B0aW9ucyk7Cisg
ICAgY29udGV4dC5kcmF3SW1hZ2UoZ3N0SW1hZ2UtPmltYWdlKCksIHJlY3QsIGdzdEltYWdlLT5y
ZWN0KCksIHsgQ29tcG9zaXRlQ29weSwgbV9yZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkID8gbV92
aWRlb1NvdXJjZU9yaWVudGF0aW9uIDogSW1hZ2VPcmllbnRhdGlvbigpIH0pOwogfQogCiAjaWYg
VVNFKEdTVFJFQU1FUl9HTCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ5LDE0ICs1NDksMTQgQEAg
SW1hZ2VEcmF3UmVzdWx0IENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OgogICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHRJbXBsOjpkcmF3VGlsZWRJbWFnZUltcGwoZ3JhcGhpY3NDb250ZXh0KCksIGlt
YWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2NhbGVGYWN0b3IsIGhSdWxlLCB2UnVsZSwg
aW1hZ2VQYWludGluZ09wdGlvbnMpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQordm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBzdHJ1Y3QgRHJhd05hdGl2ZUltYWdlIGZpbmFsIDogUGFpbnRpbmdP
cGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4sIEZsb2F0UmVj
dCwgRmxvYXRSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0
aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQsIENhaXJvOjpTaGFkb3dTdGF0ZT4gewor
ICAgIHN0cnVjdCBEcmF3TmF0aXZlSW1hZ2UgZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgRmxvYXRSZWN0LCBGbG9hdFJlY3Qs
IEltYWdlUGFpbnRpbmdPcHRpb25zLCBmbG9hdCwgQ2Fpcm86OlNoYWRvd1N0YXRlPiB7CiAgICAg
ICAgIHZpcnR1YWwgfkRyYXdOYXRpdmVJbWFnZSgpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lk
IGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxheWVyKSBvdmVycmlkZQogICAg
ICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd05hdGl2ZUltYWdlKGNvbnRleHRGb3JSZXBs
YXkocmVwbGF5ZXIpLCBhcmc8MD4oKS5nZXQoKSwgYXJnPDE+KCksIGFyZzwyPigpLCBhcmc8Mz4o
KSwgYXJnPDQ+KCksIGFyZzw1PigpLCBhcmc8Nj4oKSwgYXJnPDc+KCksIGFyZzw4PigpKTsKKyAg
ICAgICAgICAgIENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoY29udGV4dEZvclJlcGxheShyZXBsYXll
ciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4o
KSwgYXJnPDU+KCkpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzKSBvdmVycmlkZQpAQCAtNTY3LDE3ICs1NjcsMTcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjpkcmF3TmF0aXZlSQogCiAgICAgVU5VU0VEX1BBUkFNKGltYWdlU2l6ZSk7CiAgICAg
YXV0byYgc3RhdGUgPSBncmFwaGljc0NvbnRleHQoKS5zdGF0ZSgpOwotICAgIGFwcGVuZChjcmVh
dGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4oUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4oaW1hZ2Uu
Z2V0KCkpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwg
b3JpZW50YXRpb24sIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHksIHN0YXRlLmFscGhh
LCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CisgICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8
RHJhd05hdGl2ZUltYWdlPihSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PihpbWFnZS5nZXQoKSksIGRl
c3RSZWN0LCBzcmNSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcHRpb25zLCBzdGF0ZS5pbWFn
ZUludGVycG9sYXRpb25RdWFsaXR5KSwgc3RhdGUuYWxwaGEsIENhaXJvOjpTaGFkb3dTdGF0ZShz
dGF0ZSkpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3UGF0dGVybihJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3Qg
RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3Bl
cmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBG
bG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZT4geworICAgIHN0cnVjdCBEcmF3UGF0dGVybiBmaW5hbCA6IFBhaW50aW5nT3Bl
cmF0aW9uLCBPcGVyYXRpb25EYXRhPFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+LCBJbnRTaXplLCBG
bG9hdFJlY3QsIEZsb2F0UmVjdCwgQWZmaW5lVHJhbnNmb3JtLCBGbG9hdFBvaW50LCBJbWFnZVBh
aW50aW5nT3B0aW9ucz4gewogICAgICAgICB2aXJ0dWFsIH5EcmF3UGF0dGVybigpID0gZGVmYXVs
dDsKIAogICAgICAgICB2b2lkIGV4ZWN1dGUoUGFpbnRpbmdPcGVyYXRpb25SZXBsYXkmIHJlcGxh
eWVyKSBvdmVycmlkZQogICAgICAgICB7Ci0gICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4o
Y29udGV4dEZvclJlcGxheShyZXBsYXllciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJn
PDI+KCksIGFyZzwzPigpLCBhcmc8ND4oKSwgYXJnPDU+KCksIGFyZzw2PigpLCBhcmc8Nz4oKSk7
CisgICAgICAgICAgICBDYWlybzo6ZHJhd1BhdHRlcm4oY29udGV4dEZvclJlcGxheShyZXBsYXll
ciksIGFyZzwwPigpLmdldCgpLCBhcmc8MT4oKSwgYXJnPDI+KCksIGFyZzwzPigpLCBhcmc8ND4o
KSwgYXJnPDU+KCksIGFyZzw2PigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZHVtcChU
ZXh0U3RyZWFtJiB0cykgb3ZlcnJpZGUKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuCiAKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7
CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkpCi0gICAgICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdQYXR0ZXJuPihXVEZNb3ZlKHN1
cmZhY2UpLCBJbnRTaXplKGltYWdlLnNpemUoKSksIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVy
blRyYW5zZm9ybSwgcGhhc2UsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUpKTsKKyAgICAg
ICAgYXBwZW5kKGNyZWF0ZUNvbW1hbmQ8RHJhd1BhdHRlcm4+KFdURk1vdmUoc3VyZmFjZSksIElu
dFNpemUoaW1hZ2Uuc2l6ZSgpKSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3Jt
LCBwaGFzZSwgb3B0aW9ucykpOwogfQogCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRy
YXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3
UmVzdWx0IGRyYXdJbWFnZShXZWJDb3JlOjpJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdU
aWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdl
KFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6
OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdl
UGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29u
c3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJD
b3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2ViQ29yZTo6QmxlbmRNb2RlLCBXZWJDb3JlOjpJbWFn
ZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6Oklt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJh
dG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUgPSBXZWJDb3JlOjpCbGVuZE1vZGU6Ok5vcm1hbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1h
Z2VQdHImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6SW1h
Z2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWlu
dGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlk
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EaXJlY3QyRE9w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9EaXJlY3QyRE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRGlyZWN0MkRPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUwLDcgKzc1MCw3IEBAIHZvaWQgZHJhd0dseXBocyhQbGF0Zm9y
bUNvbnRleHREaXJlY3QyRCYKIH0KIAogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNv
bnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJV0lDQml0bWFwKiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBvcmlnaW5hbEltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSwgZmxvYXQgZ2xv
YmFsQWxwaGEsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSkKK3ZvaWQgZHJhd05hdGl2
ZUltYWdlKFBsYXRmb3JtQ29udGV4dERpcmVjdDJEJiBwbGF0Zm9ybUNvbnRleHQsIElXSUNCaXRt
YXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIG9yaWdpbmFsSW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zLCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3Rh
dGUmIHNoYWRvd1N0YXRlKQogewogICAgIGF1dG8gbmF0aXZlSW1hZ2VTaXplID0gYml0bWFwU2l6
ZShpbWFnZSk7CiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBkZXZpY2VCaXRtYXA7CkBAIC03NTks
MTAgKzc1OSwxMCBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gYml0bWFwU2l6ZShkZXZpY2VC
aXRtYXAuZ2V0KCkpOwotICAgIGRyYXdOYXRpdmVJbWFnZShwbGF0Zm9ybUNvbnRleHQsIGRldmlj
ZUJpdG1hcC5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sIGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHks
IGdsb2JhbEFscGhhLCBzaGFkb3dTdGF0ZSk7CisgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3Jt
Q29udGV4dCwgZGV2aWNlQml0bWFwLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zLCBnbG9iYWxBbHBoYSwgc2hhZG93U3RhdGUpOwogfQogCi12b2lkIGRyYXdOYXRp
dmVJbWFnZShQbGF0Zm9ybUNvbnRleHREaXJlY3QyRCYgcGxhdGZvcm1Db250ZXh0LCBJRDJEMUJp
dG1hcCogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNv
bXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
LCBmbG9hdCBnbG9iYWxBbHBoYSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlKQordm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0RGlyZWN0MkQmIHBsYXRmb3JtQ29udGV4
dCwgSUQyRDFCaXRtYXAqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucywgZmxvYXQgZ2xvYmFsQWxwaGEsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSkKIHsKICAgICBhdXRvIGJpdG1hcFNpemUgPSBpbWFnZS0+R2V0
U2l6ZSgpOwogCkBAIC03OTQsMTYgKzc5NCwxNiBAQCB2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0
Zm9ybUNvbnRleHREaXJlCiAgICAgaWYgKCFzaG91bGRVc2VTdWJpbWFnZSAmJiBjdXJySGVpZ2h0
IDwgaW1hZ2VTaXplLmhlaWdodCgpKQogICAgICAgICBhZGp1c3RlZERlc3RSZWN0LnNldEhlaWdo
dChhZGp1c3RlZERlc3RSZWN0LmhlaWdodCgpICogY3VyckhlaWdodCAvIGltYWdlU2l6ZS5oZWln
aHQoKSk7CiAKLSAgICBTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4
dCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSk7CisgICAgU3RhdGU6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSwg
b3B0aW9ucy5ibGVuZE1vZGUoKSk7CiAKICAgICAvLyBJbWFnZU9yaWVudGF0aW9uIGV4cGVjdHMg
dGhlIG9yaWdpbiB0byBiZSBhdCAoMCwgMCkuCiAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShhZGp1
c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCkpOwogICAgIGNvbnRleHQtPlNl
dFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24o
RmxvYXRQb2ludCgpKTsKIAotICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbWFnZU9yaWVudGF0aW9u
OjpOb25lKSB7Ci0gICAgICAgIGNvbmNhdENUTShwbGF0Zm9ybUNvbnRleHQsIG9yaWVudGF0aW9u
LnRyYW5zZm9ybUZyb21EZWZhdWx0KGFkanVzdGVkRGVzdFJlY3Quc2l6ZSgpKSk7Ci0gICAgICAg
IGlmIChvcmllbnRhdGlvbi51c2VzV2lkdGhBc0hlaWdodCgpKSB7CisgICAgaWYgKG9wdGlvbnMu
b3JpZW50YXRpb24oKSAhPSBJbWFnZU9yaWVudGF0aW9uOjpOb25lKSB7CisgICAgICAgIGNvbmNh
dENUTShwbGF0Zm9ybUNvbnRleHQsIG9wdGlvbnMub3JpZW50YXRpb24oKS50cmFuc2Zvcm1Gcm9t
RGVmYXVsdChhZGp1c3RlZERlc3RSZWN0LnNpemUoKSkpOworICAgICAgICBpZiAob3B0aW9ucy5v
cmllbnRhdGlvbigpLnVzZXNXaWR0aEFzSGVpZ2h0KCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBk
ZXN0aW5hdGlvbiByZWN0IHdpbGwgaGF2ZSBpdCdzIHdpZHRoIGFuZCBoZWlnaHQgYWxyZWFkeSBy
ZXZlcnNlZCBmb3IgdGhlIG9yaWVudGF0aW9uIG9mCiAgICAgICAgICAgICAvLyB0aGUgaW1hZ2Us
IGFzIGl0IHdhcyBuZWVkZWQgZm9yIHBhZ2UgbGF5b3V0LCBzbyB3ZSBuZWVkIHRvIHJldmVyc2Ug
aXQgYmFjayBoZXJlLgogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdCA9IEZsb2F0UmVjdChh
ZGp1c3RlZERlc3RSZWN0LngoKSwgYWRqdXN0ZWREZXN0UmVjdC55KCksIGFkanVzdGVkRGVzdFJl
Y3QuaGVpZ2h0KCksIGFkanVzdGVkRGVzdFJlY3Qud2lkdGgoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBo
aWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDggQEAgcHVibGljOgogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jl
c3VsdCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYsIEltYWdlOjpUaWxlUnVsZSwgSW1hZ2U6OlRpbGVSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRh
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZUltYWdl
KGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKICAg
ICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
R1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDcgKzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAg
IGlmIChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0
UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6
ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3Qo
MC4wZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0
KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21w
b3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywg
SW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9z
aXRlQ29weSB9KTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNn
Q29udGV4dCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1h
dGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2Up
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgQ0dJbWFnZUdldFdp
ZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1NpemUud2lkdGgoKSkpIHsKICAg
ICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJlbnRGcmFtZTsKICAgICAgICAg
ICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSks
IGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJl
Y3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0
KCkpLCB7IGNvbXBvc2l0ZU9wIH0pOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJy
ZW50RnJhbWU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBO
byBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2lu
ZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFn
ZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxl
bmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRp
b246Ok5vbmUpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYs
IGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCB7IGNvbXBvc2l0ZU9wIH0p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lv
biAyNDkyMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VD
YWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBCaXRtYXBJ
bWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBkcmF3
RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZv
LmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAgICAg
ZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5ibVdp
ZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGU6Ok5v
cm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7
CisgICAgICAgIGRyYXcoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgs
IGJtcEluZm8uYm1IZWlnaHQpLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndpZHRo
KCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIHsgQ29tcG9zaXRlQ29weSB9KTsKIAogICAgIC8vIERv
IGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdldFJlZik7CkBAIC0xMDAsNyArMTAwLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogICAgICAgICBpZiAo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UuZ2V0KCkpID09IHN0YXRpY19j
YXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRf
d2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNTaXplLndpZHRo
KCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVudEZyYW1lID0gbV9jdXJyZW50RnJhbWU7
CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7Ci0gICAgICAgICAgICBkcmF3KGN0eHQs
IGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUu
aGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6
U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgICAgICAgICAgZHJhdyhj
dHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNT
aXplLmhlaWdodCgpKSwgeyBjb21wb3NpdGVPcCB9KTsKICAgICAgICAgICAgIG1fY3VycmVudEZy
YW1lID0gY3VycmVudEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0x
MDgsNyArMTA4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwog
CiAgICAgLy8gTm8gaW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNr
IHRvIGRyYXdpbmcgdGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0g
Qml0bWFwSW1hZ2U6OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9z
aXRlT3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFn
ZU9yaWVudGF0aW9uOjpOb25lKTsKKyAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgeyBjb21w
b3NpdGVPcCB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9OYXRpdmVJbWFn
ZURpcmVjdDJELmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL05hdGl2ZUltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIENvbG9yIG5hdGl2ZUltYWdlU2luZ2xlUGl4ZWxTb2xpZENvbG9yKGMK
ICAgICByZXR1cm4gQ29sb3IoKTsKIH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0
aXZlSW1hZ2VQdHImIGltYWdlLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50U2l6ZSYg
c3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1v
ZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pCit2b2lkIGRyYXdOYXRpdmVJbWFnZShj
b25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bnRTaXplJiBzcmNTaXplLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCiB7CiAgICAgYXV0
byBwbGF0Zm9ybUNvbnRleHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRHJhZ0ltYWdlSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0JKHJldmlzaW9uIDI0
OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EcmFnSW1hZ2VJT1MubW0JKHdv
cmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFn
ZUZyb21JbWFnZShJbQogICAgICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dChyZW5kZXJlckNv
bnRleHQuQ0dDb250ZXh0KTsKICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgaW1hZ2VTaXpl
LmhlaWdodCk7CiAgICAgICAgIGNvbnRleHQuc2NhbGUoeyBhZGp1c3RlZEltYWdlU2NhbGUsIC1h
ZGp1c3RlZEltYWdlU2NhbGUgfSk7Ci0gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwg
RmxvYXRQb2ludCgpLCBJbWFnZVBhaW50aW5nT3B0aW9ucyhvcmllbnRhdGlvbikpOworICAgICAg
ICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoKSwgeyBvcmllbnRhdGlvbiB9
KTsKICAgICB9XTsKICAgICByZXR1cm4gaW1hZ2VDb3B5LkNHSW1hZ2U7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAKICAgICAgICAgICAgIGF1dG8gaW50ZXJw
b2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsICppbWFnZSwgJmJn
TGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwogICAgICAgICAgICAgYXV0byBkZWNvZGluZ01v
ZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXcoKmltYWdlLCBwYWludEluZm8pOwotICAgICAg
ICAgICAgYXV0byBkcmF3UmVzdWx0ID0gY29udGV4dC5kcmF3VGlsZWRJbWFnZSgqaW1hZ2UsIGdl
b21ldHJ5LmRlc3RSZWN0KCksIHRvTGF5b3V0UG9pbnQoZ2VvbWV0cnkucmVsYXRpdmVQaGFzZSgp
KSwgZ2VvbWV0cnkudGlsZVNpemUoKSwgZ2VvbWV0cnkuc3BhY2VTaXplKCksIEltYWdlUGFpbnRp
bmdPcHRpb25zKGNvbXBvc2l0ZU9wLCBiZ0xheWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUs
IEltYWdlT3JpZW50YXRpb246Ok5vbmUsIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAgIGF1
dG8gZHJhd1Jlc3VsdCA9IGNvbnRleHQuZHJhd1RpbGVkSW1hZ2UoKmltYWdlLCBnZW9tZXRyeS5k
ZXN0UmVjdCgpLCB0b0xheW91dFBvaW50KGdlb21ldHJ5LnJlbGF0aXZlUGhhc2UoKSksIGdlb21l
dHJ5LnRpbGVTaXplKCksIGdlb21ldHJ5LnNwYWNlU2l6ZSgpLCB7IGNvbXBvc2l0ZU9wLCBiZ0xh
eWVyLmJsZW5kTW9kZSgpLCBkZWNvZGluZ01vZGUsIGludGVycG9sYXRpb24gfSk7CiAgICAgICAg
ICAgICBpZiAoZHJhd1Jlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGlu
ZykgewogICAgICAgICAgICAgICAgIEFTU0VSVChiZ0ltYWdlLT5pc0NhY2hlZEltYWdlKCkpOwog
ICAgICAgICAgICAgICAgIGJnSW1hZ2UtPmNhY2hlZEltYWdlKCktPmFkZENsaWVudFdhaXRpbmdG
b3JBc3luY0RlY29kaW5nKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMjQ5MjA5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50
U25hcHNob3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQsIGltYWdlLCAm
aW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2Us
IGFsaWduZWRSZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhpbWFnZU9yaWVudGF0aW9uKCksIGlu
dGVycG9sYXRpb24pKTsKKyAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgYWxpZ25lZFJlY3Qs
IHsgaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uIH0pOwogfQogCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpwYWludENvbnRlbnRzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OSw3ICs0NjksNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgICAgICAg
ICAgICAgIGNlbnRlclkgPSAwOwogICAgICAgICAgICAgICAgIGltYWdlT2Zmc2V0ID0gTGF5b3V0
U2l6ZShsZWZ0Qm9yZGVyICsgbGVmdFBhZCArIGNlbnRlclggKyBtaXNzaW5nSW1hZ2VCb3JkZXJX
aWR0aCwgdG9wQm9yZGVyICsgdG9wUGFkICsgY2VudGVyWSArIG1pc3NpbmdJbWFnZUJvcmRlcldp
ZHRoKTsKIAotICAgICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgc25hcFJl
Y3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0KHBhaW50T2Zmc2V0ICsgaW1hZ2VPZmZzZXQsIGlt
YWdlU2l6ZSksIGRldmljZVNjYWxlRmFjdG9yKSwgaW1hZ2VPcmllbnRhdGlvbigpKTsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIHNuYXBSZWN0VG9EZXZpY2VQaXhl
bHMoTGF5b3V0UmVjdChwYWludE9mZnNldCArIGltYWdlT2Zmc2V0LCBpbWFnZVNpemUpLCBkZXZp
Y2VTY2FsZUZhY3RvciksIHsgaW1hZ2VPcmllbnRhdGlvbigpIH0pOwogICAgICAgICAgICAgICAg
IGVycm9yUGljdHVyZURyYXduID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIApAQCAtNjMyLDcgKzYz
Miw3IEBAIEltYWdlRHJhd1Jlc3VsdCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmUKICAgICAgICAg
ZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkudXBkYXRlRnJvbVNldHRpbmdzKHNldHRpbmdz
KCkpOwogCiAgICAgYXV0byBkZWNvZGluZ01vZGUgPSBkZWNvZGluZ01vZGVGb3JJbWFnZURyYXco
KmltYWdlLCBwYWludEluZm8pOwotICAgIGF1dG8gZHJhd1Jlc3VsdCA9IHBhaW50SW5mby5jb250
ZXh0KCkuZHJhd0ltYWdlKCppbWcsIHJlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFnZU9yaWVudGF0
aW9uKCksIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8u
Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCB7IGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgZGVjb2RpbmdNb2RlLCBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9s
YXRpb24gfSk7CiAgICAgaWYgKGRyYXdSZXN1bHQgPT0gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZXF1
ZXN0RGVjb2RpbmcpCiAgICAgICAgIGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5hZGRD
bGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGluZygqdGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAkocmV2
aXNpb24gMjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OnBhaW50U25hcHMKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvbiA9IGNob29zZUludGVycG9sYXRpb25R
dWFsaXR5KGNvbnRleHQsICppbWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7Ci0gICAg
Y29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMoaW1hZ2VPcmllbnRhdGlvbigpLCBpbnRlcnBvbGF0aW9uKSk7CisgICAgY29udGV4dC5kcmF3
SW1hZ2UoKmltYWdlLCBhbGlnbmVkUmVjdCwgeyBpbWFnZU9yaWVudGF0aW9uKCksIGludGVycG9s
YXRpb24gfSk7CiB9CiAKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
Z2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNv
cikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0JKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjI3OCw3ICsyMjc4LDcgQEAgYm9vbCBSZW5k
ZXJUaGVtZU1hYzo6cGFpbnRTbmFwc2hvdHRlZFBsdQogICAgIGlmIChhbGlnbmVkUGx1Z2luUmVj
dC53aWR0aCgpIDw9IDAgfHwgYWxpZ25lZFBsdWdpblJlY3QuaGVpZ2h0KCkgPD0gMCkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBjb250ZXh0LmRyYXdJbWFnZSgqc25hcHNob3QsIGFsaWdu
ZWRQbHVnaW5SZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBjb250ZXh0LmRyYXdJbWFn
ZSgqc25hcHNob3QsIGFsaWduZWRQbHVnaW5SZWN0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24g
MjQ5MjA5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5l
clNpemUoKSBjb25zdAogfQogCiBJbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXdGb3JDb250
YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUgY29udGFpbmVy
U2l6ZSwgZmxvYXQgY29udGFpbmVyWm9vbSwgY29uc3QgVVJMJiBpbml0aWFsRnJhZ21lbnRVUkws
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwKLSAgICBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAg
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7CkBAIC0yMDMsNyArMjAzLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0lt
YWdlOjpkcmF3Rm9yQ29udGFpbgogCiAgICAgZnJhbWVWaWV3KCktPnNjcm9sbFRvRnJhZ21lbnQo
aW5pdGlhbEZyYWdtZW50VVJMKTsKIAotICAgIEltYWdlRHJhd1Jlc3VsdCByZXN1bHQgPSBkcmF3
KGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNyYywgY29tcG9zaXRlT3AsIGJsZW5kTW9kZSwgRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbjo6Tm9uZSk7CisgICAgSW1h
Z2VEcmF3UmVzdWx0IHJlc3VsdCA9IGRyYXcoY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjLCBv
cHRpb25zKTsKIAogICAgIHNldEltYWdlT2JzZXJ2ZXIob2JzZXJ2ZXIpOwogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yMjIsNyArMjIyLDcgQEAgTmF0aXZlSW1hZ2VQdHIgU1ZHSW1hZ2U6Om5hdGl2
ZUltYWdlRm9yQwogICAgIGlmICghYnVmZmVyKSAvLyBmYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBy
ZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb246Ok5vbmUpOworICAgIGRy
YXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpKTsKIAogICAgIC8vIEZJWE1FOiBX
SyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgog
ICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI2NSw3ICsyNjUsNyBAQCBOYXRpdmVJbWFnZVB0ciBT
VkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAjZW5kaWYKIAogdm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlh
bEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCi0gICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBGbG9hdFJlY3Qgem9vbWVk
Q29udGFpbmVyUmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5lclNpemUpOwog
ICAgIHpvb21lZENvbnRhaW5lclJlY3Quc2NhbGUoY29udGFpbmVyWm9vbSk7CkBAIC0yODIsNyAr
MjgyLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAx
LCBDb2xvclNwYWNlU1JHQiwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0
byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKLSAgICBkcmF3Rm9yQ29udGFpbmVy
KGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFs
RnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIGRyYXdGb3JDb250YWluZXIo
YnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxG
cmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKICAgICBp
ZiAoY29udGV4dC5kcmF3THVtaW5hbmNlTWFzaygpKQogICAgICAgICBidWZmZXItPmNvbnZlcnRU
b0x1bWluYW5jZU1hc2soKTsKIApAQCAtMjk3LDEwICsyOTcsMTAgQEAgdm9pZCBTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybS5z
Y2FsZSgxIC8gaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCAxIC8gaW1hZ2VCdWZmZXJTY2FsZS5o
ZWlnaHQoKSk7CiAKICAgICBjb250ZXh0LnNldERyYXdMdW1pbmFuY2VNYXNrKGZhbHNlKTsKLSAg
ICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwgZHN0UmVjdCwgc2NhbGVkU3JjUmVjdCwgdW5z
Y2FsZWRQYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgY29tcG9zaXRlT3AsIGJsZW5k
TW9kZSk7CisgICAgaW1hZ2UtPmRyYXdQYXR0ZXJuKGNvbnRleHQsIGRzdFJlY3QsIHNjYWxlZFNy
Y1JlY3QsIHVuc2NhbGVkUGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMp
OwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3AsIEJsZW5kTW9kZSBibGVuZE1vZGUsIERl
Y29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikKK0ltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3Vs
dDo6RGlkTm90aGluZzsKQEAgLTMwOSwxMSArMzA5LDExIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJ
bWFnZTo6ZHJhdyhHcmFwaGljc0MKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgY29udGV4dC5zZXRD
b21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpLCBvcHRpb25zLmJs
ZW5kTW9kZSgpKTsKICAgICBjb250ZXh0LmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7
CiAKICAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKLSAgICBib29sIGNvbXBvc2l0
aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNv
dXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZTo6Tm9ybWFsIHx8IGFscGhhIDwgMTsK
KyAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IG9wdGlvbnMu
Y29tcG9zaXRlT3BlcmF0b3IoKSAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IG9wdGlvbnMuYmxl
bmRNb2RlKCkgIT0gQmxlbmRNb2RlOjpOb3JtYWwgfHwgYWxwaGEgPCAxOwogICAgIGlmIChjb21w
b3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKICAgICAgICAgY29udGV4dC5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKICAgICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVP
cGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHJldmlzaW9uIDI0OTIwOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NCwxMCArOTQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRBbmltYXRpb25UaW1lckZp
cmVkKCk7CiAKICAgICBleHBsaWNpdCBTVkdJbWFnZShJbWFnZU9ic2VydmVyJik7Ci0gICAgSW1h
Z2VEcmF3UmVzdWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9t
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1v
ZGUsIERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7Ci0gICAgSW1hZ2VEcmF3
UmVzdWx0IGRyYXdGb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXpl
IGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZy
YWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBkcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5l
clNpemUsIGZsb2F0IGNvbnRhaW5lclpvb20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJM
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsCi0gICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmLCBCbGVuZE1vZGUpOworICAgIEltYWdl
RHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdG9SZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pIGZpbmFsOworICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3Rm9yQ29udGFpbmVyKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSBjb250YWluZXJTaXplLCBmbG9hdCBjb250YWlu
ZXJab29tLCBjb25zdCBVUkwmIGluaXRpYWxGcmFnbWVudFVSTCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSk7CisgICAgdm9pZCBkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0IGNvbnRhaW5lclpv
b20sIGNvbnN0IFVSTCYgaW5pdGlhbEZyYWdtZW50VVJMLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gcm9vdEVsZW1l
bnQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCShyZXZpc2lvbiAyNDkyMDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCwxNiArMzQsMTUgQEAgRmxvYXRTaXplIFNWR0ltYWdlRm9yQ29udGFpbmVyOjpz
aXplKCkgYwogICAgIHJldHVybiBGbG9hdFNpemUocm91bmRlZEludFNpemUoc2NhbGVkQ29udGFp
bmVyU2l6ZSkpOwogfQogCi1JbWFnZURyYXdSZXN1bHQgU1ZHSW1hZ2VGb3JDb250YWluZXI6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsCi0g
ICAgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCwgQmxlbmRNb2RlIGJsZW5kTW9kZSwgRGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uKQor
SW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlRm9yQ29udGFpbmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIHJldHVy
biBtX2ltYWdlLT5kcmF3Rm9yQ29udGFpbmVyKGNvbnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9j
b250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgZHN0UmVjdCwgc3JjUmVjdCwgY29t
cG9zaXRlT3AsIGJsZW5kTW9kZSk7CisgICAgcmV0dXJuIG1faW1hZ2UtPmRyYXdGb3JDb250YWlu
ZXIoY29udGV4dCwgbV9jb250YWluZXJTaXplLCBtX2NvbnRhaW5lclpvb20sIG1faW5pdGlhbEZy
YWdtZW50VVJMLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBTVkdJbWFn
ZUZvckNvbnRhaW5lcjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAotICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewotICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNvbnRleHQsIG1f
Y29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVudFVSTCwgc3Jj
UmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGNvbXBvc2l0ZU9wLCBkc3RS
ZWN0LCBibGVuZE1vZGUpOworICAgIG1faW1hZ2UtPmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKGNv
bnRleHQsIG1fY29udGFpbmVyU2l6ZSwgbV9jb250YWluZXJab29tLCBtX2luaXRpYWxGcmFnbWVu
dFVSTCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIGRzdFJlY3Qs
IG9wdGlvbnMpOwogfQogCiBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZUZvckNvbnRhaW5lcjo6bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoY29uc3QgR3JhcGhpY3NDb250ZXh0KiB0YXJnZXRDb250
ZXh0KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlRm9yQ29udGFp
bmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
Rm9yQ29udGFpbmVyLmgJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1
Myw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbWFnZS0+Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lv
bnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwogICAg
IH0KIAotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUs
IERlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgZmluYWw7CisgICAgSW1hZ2VEcmF3UmVz
dWx0IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBmaW5hbDsKIAotICAgIHZv
aWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0U2l6ZSYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIGZpbmFsOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgZmlu
YWw7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRp
dmUuCiAgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTkt
MDgtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBBbGwgaW1hZ2UgZHJhd2luZyBmdW5jdGlvbnMgc2hvdWxkIHRha2UgYW4gYXJndW1lbnQg
b2YgdHlwZSBJbWFnZVBhaW50aW5nT3B0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMDU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkgbm93IHRha2Vz
IGFuIEltYWdlUGFpbnRpbmdPcHRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjppbWFnZVBvc2l0aW9uSW5mb3Jt
YXRpb24pOgorCiAyMDE5LTA4LTI4ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgbWFjT1MgPCAxMC4xMyAocGFydCAyKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0JKHJldmlzaW9uIDI0OTIwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjE5LDcgKzI2MTksNyBA
QCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViCiAgICAgaWYgKCFncmFw
aGljc0NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlKCppbWFnZSwgRmxvYXRSZWN0KDAsIDAsIGJpdG1hcFNpemUud2lkdGgoKSwgYml0bWFw
U2l6ZS5oZWlnaHQoKSksIHJlbmRlckltYWdlLmltYWdlT3JpZW50YXRpb24oKSk7CisgICAgZ3Jh
cGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFJlY3QoMCwgMCwgYml0bWFwU2l6
ZS53aWR0aCgpLCBiaXRtYXBTaXplLmhlaWdodCgpKSwgeyByZW5kZXJJbWFnZS5pbWFnZU9yaWVu
dGF0aW9uKCkgfSk7CiAgICAgaW5mby5pbWFnZSA9IHNoYXJlZEJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>