<?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>236731</bug_id>
          
          <creation_ts>2022-02-16 14:20:05 -0800</creation_ts>
          <short_desc>Add support for setting RemoteLayerBackingStore buffers non-volatile in the GPU Process</short_desc>
          <delta_ts>2022-02-17 09:48:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Process Model</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <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>1842521</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 14:20:05 -0800</bug_when>
    <thetext>Add support for setting RemoteLayerBackingStore buffers non-volatile in the GPU Process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842522</commentid>
    <comment_count>1</comment_count>
      <attachid>452249</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 14:26:00 -0800</bug_when>
    <thetext>Created attachment 452249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842525</commentid>
    <comment_count>2</comment_count>
      <attachid>452249</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-02-16 14:30:55 -0800</bug_when>
    <thetext>Comment on attachment 452249
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:49
&gt; +enum class SetNonVolatileResult : uint8_t {

Should this be VolatilityState? (but maybe not, that one only has two states)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842604</commentid>
    <comment_count>3</comment_count>
      <attachid>452273</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 16:55:57 -0800</bug_when>
    <thetext>Created attachment 452273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842683</commentid>
    <comment_count>4</comment_count>
      <attachid>452301</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-16 20:40:50 -0800</bug_when>
    <thetext>Created attachment 452301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842937</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 09:47:12 -0800</bug_when>
    <thetext>Committed r290030 (247410@main): &lt;https://commits.webkit.org/247410@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452301.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842939</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-17 09:48:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89092676&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452249</attachid>
            <date>2022-02-16 14:26:00 -0800</date>
            <delta_ts>2022-02-16 18:23:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236731-20220216142559.patch</filename>
            <type>text/plain</type>
            <size>39436</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZDg4MTk3NjQ1N2MxNzY4
OWEzYmFlOWJhMjk5YzYzNDk5ODQ5ODAuLmVjNzVmNjc3NjFmZDEyY2IyYzRkYzQ5OWI0MDM2N2I4
NDgzZTNiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjItMDItMTYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHNldHRpbmcgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgYnVmZmVycyBub24tdm9sYXRpbGUgaW4g
dGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzY3MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDYWxscyB0byBzZXRWb2xhdGlsZSgpIGFuZCBpc0luVXNlKCkgb24gSU9TdXJmYWNl
IG5lZWQgdG8gaGFwcGVuIGluIHRoZSBHUFUgUHJvY2VzcywKKyAgICAgICAgc28gd2hlbiBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSBzd2FwcyBidWZmZXJzIGluIGRpc3BsYXkoKSwgYW5kIG1ha2Vz
IHRoZSBmcm9udCBidWZmZXIKKyAgICAgICAgbm9uLXZvbGF0aWxlLCB0aG9zZSB0aGluZ3MgbmVl
ZCB0byBnbyB2aWEgUmVtb3RlUmVuZGVyaW5nQmFja2VuZC4KKyAgICAgICAgCisgICAgICAgIFNv
IHBsdW1iIG1hcmtTdXJmYWNlTm9uVm9sYXRpbGUoKSBhbmQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZl
cigpIHRocm91Z2ggUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uCisgICAgICAgIGFu
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBib3RoIGFzIHN5bmMgbWVzc2FnZXMuCisgICAgICAg
IAorICAgICAgICBJbiBib3RoIGNhc2VzLCBpZiB0aGUgc3VyZmFjZSB3YXMgcHVyZ2VkIChpLmUu
IHNldE5vblZvbGF0aWxlIHJldHVybmVkIEVtcHR5KSB3ZSBuZWVkCisgICAgICAgIHRvIHRyaWdn
ZXIgYSBzZXROZWVkc0Rpc3BsYXkoKSwgd2lyZWQgdGhyb3VnaCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoKQorICAgICAgICBzbyB0aGVyZSdz
IG9ubHkgb25lIGNhbGwgc2l0ZS4KKworICAgICAgICBXZSBhbHNvIG5lZWQgdG8gYWx3YXlzIHNl
bmQgdGhlIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBiYWNrIGZyb20gdGhlIEdQVSBQcm9jZXNz
IGZvcgorICAgICAgICB0aGUgZnJvbnQgYnVmZmVyLCBzaW5jZSBhIGZ1dHVyZSBwYXRjaCB3aWxs
IGNsZWFyIHRoZXNlIG91dCBpbiB0aGUgd2ViIHByb2Nlc3Mgd2hlbgorICAgICAgICBtYWtpbmcg
YnVmZmVycyB2b2xhdGlsZS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUZyb21CdWZmZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjptYXJrU3VyZmFjZU5v
blZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6c3dh
cFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseVN3YXBwZWRCdWZmZXJz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFy
dGlhbFJlcGFpbnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpzZXRCdWZmZXJWb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpzZXRCdWZmZXJOb25Wb2xhdGlsZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjp3aWxsTWFrZUJ1ZmZlclZvbGF0aWxlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpZE1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlclZv
bGF0aWxpdHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YnVm
ZmVyRm9yVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpzdXBwb3J0c1BhcnRpYWxSZXBhaW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxl
Y3Rpb246Om1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToK
KyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJl
bmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmlu
Z0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246Om1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3Jl
Q29sbGVjdGlvbjo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpzZXRCYWNrZW5kSGFu
ZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZzo6
Y2xlYXJCYWNrZW5kSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnB1dFBpeGVsQnVmZmVy
Rm9ySW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6Om1hcmtTdXJmYWNlTm9uVm9sYXRpbGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZDo6c2V0QmFja2VuZEhhbmRsZSk6CisgICAgICAgIChXZWJLaXQ6Oklt
YWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y2xlYXJCYWNrZW5kSGFuZGxlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQuaDoKKwogMjAyMi0wMi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBkb3duY2FzdDw+IHRvIHdvcmsgd2l0aCBJ
bWFnZUJ1ZmZlckJhY2tlbmRzIHRoYXQgc3VwcG9ydCBzaGFyaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggMDkwNWE0YzVmYWVkZDk3ZTViMDA0MDQ0ZjlkODNiN2Y5NDRkZGZhNy4uOGU1
Zjc2MDY4NTZlYWZlZmUxYjNkNzJjNTVmMmFjNjM1NWZhMWFlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtMzg0LDYgKzM4NCw3MiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OnJlbGVhc2VSZW1vdGVSZXNvdXJjZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZgogICAg
IG1fcmVtb3RlRGlzcGxheUxpc3RzLnJlbW92ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCitzdGF0aWMgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhh
bmRsZUZyb21CdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBhdXRv
KiBiYWNrZW5kID0gYnVmZmVyLmVuc3VyZUJhY2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNr
ZW5kKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byogc2hhcmluZyA9
IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuY3JlYXRlQmFja2VuZEhhbmRs
ZSgpOworCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwordm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjptYXJrU3VyZmFjZU5vblZvbGF0aWxlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5kSGFuZGxlLCBib29sIGJ1ZmZl
cldhc0VtcHR5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKHsgaWRlbnRpZmllciwg
bV9ncHVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pOwor
ICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBm
YWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJhY2tlbmRIYW5kbGUg
PSBoYW5kbGVGcm9tQnVmZmVyKCppbWFnZUJ1ZmZlcik7CisgICAgYXV0byBwcmV2aW91c1N0YXRl
ID0gaW1hZ2VCdWZmZXItPnNldE5vblZvbGF0aWxlKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShiYWNrZW5kSGFuZGxlKSwgcHJldmlvdXNTdGF0ZSA9PSBWb2xhdGlsaXR5U3RhdGU6
OkVtcHR5KTsKK30KKworLy8gVGhpcyBpcyB0aGUgR1BVIFByb2Nlc3MgdmVyc2lvbiBvZiBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpLgordm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKHN0ZDo6b3B0aW9uYWw8
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBmcm9udEJ1ZmZlcklkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBiYWNrQnVmZmVySWRlbnRpZmll
cnMsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzZWNvbmRhcnlC
YWNrQnVmZmVySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZnJvbnRCdWZmZXJJZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYmFja0J1ZmZlcklkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBzZWNvbmRhcnlC
YWNrQnVmZmVySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGU+JiYgZnJvbnRCdWZmZXJIYW5kbGUsIGJvb2wgZnJvbnRCdWZmZXJXYXNFbXB0eSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBmZXRjaEJ1ZmZlciA9IFsmXShzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikgLT4gSW1hZ2VCdWZm
ZXIqIHsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPyBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVkSW1hZ2VCdWZmZXIoeyAqaWRlbnRpZmllciwgbV9ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pIDogbnVsbHB0cjsKKyAgICB9OworCisgICAg
YXV0byBmcm9udEJ1ZmZlciA9IGZldGNoQnVmZmVyKGZyb250QnVmZmVySWRlbnRpZmllcik7Cisg
ICAgYXV0byBiYWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIoYmFja0J1ZmZlcklkZW50aWZpZXJzKTsK
KyAgICBhdXRvIHNlY29uZGFyeUJhY2tCdWZmZXIgPSBmZXRjaEJ1ZmZlcihzZWNvbmRhcnlCYWNr
QnVmZmVySWRlbnRpZmllcik7CisKKyAgICBpZiAoIWJhY2tCdWZmZXIgfHwgYmFja0J1ZmZlci0+
aXNJblVzZSgpKSB7CisgICAgICAgIHN0ZDo6c3dhcChiYWNrQnVmZmVyLCBzZWNvbmRhcnlCYWNr
QnVmZmVyKTsKKworICAgICAgICAvLyBXaGVuIHB1bGxpbmcgdGhlIHNlY29uZGFyeSBiYWNrIGJ1
ZmZlciBvdXQgb2YgaGliZXJuYXRpb24gKHRvIGJlY29tZQorICAgICAgICAvLyB0aGUgbmV3IGZy
b250IGJ1ZmZlciksIGlmIGl0IGlzIHNvbWVob3cgc3RpbGwgaW4gdXNlIChlLmcuIHdlIGdvdAor
ICAgICAgICAvLyB0aHJlZSBzd2FwcyBhaGVhZCBvZiB0aGUgcmVuZGVyIHNlcnZlciksIGp1c3Qg
Z2l2ZSB1cCBhbmQgZGlzY2FyZCBpdC4KKyAgICAgICAgaWYgKGJhY2tCdWZmZXIgJiYgYmFja0J1
ZmZlci0+aXNJblVzZSgpKQorICAgICAgICAgICAgYmFja0J1ZmZlciA9IG51bGxwdHI7CisgICAg
fQorCisgICAgc3RkOjpzd2FwKGZyb250QnVmZmVyLCBiYWNrQnVmZmVyKTsKKworICAgIHN0ZDo6
b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAg
ICBib29sIGZyb250QnVmZmVyV2FzRW1wdHkgPSBmYWxzZTsKKyAgICBpZiAoZnJvbnRCdWZmZXIp
IHsKKyAgICAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gZnJvbnRCdWZmZXItPnNldE5vblZvbGF0
aWxlKCk7CisgICAgICAgIGZyb250QnVmZmVyV2FzRW1wdHkgPSBwcmV2aW91c1N0YXRlID09IFZv
bGF0aWxpdHlTdGF0ZTo6RW1wdHk7CisgICAgICAgIGZyb250QnVmZmVySGFuZGxlID0gaGFuZGxl
RnJvbUJ1ZmZlcigqZnJvbnRCdWZmZXIpOworICAgIH0KKworICAgIGF1dG8gYnVmZmVySWRlbnRp
ZmVyID0gW10oSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IHsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gYnVmZmVyLT5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKTsKKyAgICB9OworCisgICAgY29tcGxldGlvbkhhbmRsZXIoYnVmZmVy
SWRlbnRpZmVyKGZyb250QnVmZmVyKSwgYnVmZmVySWRlbnRpZmVyKGJhY2tCdWZmZXIpLCBidWZm
ZXJJZGVudGlmZXIoc2Vjb25kYXJ5QmFja0J1ZmZlciksIFdURk1vdmUoZnJvbnRCdWZmZXJIYW5k
bGUpLCBmcm9udEJ1ZmZlcldhc0VtcHR5KTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJpbmdV
cGRhdGVJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OkRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHJlbmRlcmluZ1VwZGF0ZUlEKSwgbV9yZW5k
ZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBhYTY2MDRm
MzgyNDkwZjExYzcyMzk5OTcxMzc0ZDQzNDg5ZmJjZGJkLi41MDQ3Yzk0MTU4ZTQ0NDRjMzdiNGVh
Njg1ZWIwYjQ2NTBmNTRmOTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTExOCw2ICsxMTgs
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCk7CiAKKyAgICB2b2lkIG1hcmtTdXJmYWNlTm9uVm9sYXRp
bGUoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiwgYm9vbCBidWZm
ZXJXYXNFbXB0eSk+JiYpOworICAgIHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZnJvbnRCdWZmZXJJ
ZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gYmFja0J1ZmZlcklkZW50aWZpZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc2Vjb25kYXJ5QmFja0J1ZmZlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+IGZyb250QnVmZmVySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGJhY2tCdWZmZXJJZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc2Vjb25k
YXJ5QmFja0J1ZmZlcklkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlPiYmIGZyb250QnVmZmVySGFuZGxlLCBib29sIGZyb250QnVmZmVyV2FzRW1wdHkpPiYm
KTsKKwogICAgIC8vIFJlY2VpdmVkIG1lc3NhZ2VzIHRyYW5zbGF0ZWQgdG8gdXNlIFF1YWxpZmll
ZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci4KICAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVy
V2l0aFF1YWxpZmllZElkZW50aWZpZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwg
UXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGdldERhdGFV
UkxGb3JJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb24sIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5t
ZXNzYWdlcy5pbgppbmRleCBmZDQyMDcwMDA2NzU0ZDA2MjMzODEwMzZjYTRmN2EyMTgxNmUxMDA0
Li43YTU5ODJhYmQ5NGQ2YzQ4NWFlNWRjNzkwMzdmMWRjOGZhMzllOGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMzYsNiArMzYsMTAgQEAgbWVzc2FnZXMg
LT4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZCBOb3RSZWZDb3VudGVkIFN0cmVhbSB7CiAgICAgQ2Fj
aGVGb250KElQQzo6Rm9udFJlZmVyZW5jZSBmb250KSBOb3RTdHJlYW1FbmNvZGFibGUKICAgICBE
ZWxldGVBbGxGb250cygpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisKKyAg
ICBNYXJrU3VyZmFjZU5vblZvbGF0aWxlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5kSGFuZGxlLCBib29sIGJ1ZmZlcldh
c0VtcHR5KSBTeW5jaHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorICAgIFN3YXBUb1Zh
bGlkRnJvbnRCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGZyb250QnVmZmVySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGJhY2tCdWZmZXJJZGVudGlmaWVycywgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNlY29uZGFyeUJh
Y2tCdWZmZXJJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGZyb250QnVmZmVySWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGJhY2tCdWZmZXJJZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gc2Vj
b25kYXJ5QmFja0J1ZmZlcklkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGU+IGZyb250QnVmZmVySGFuZGxlLCBib29sIGZyb250QnVmZmVyV2Fz
RW1wdHkpIFN5bmNocm9ub3VzIE5vdFN0cmVhbUVuY29kYWJsZVJlcGx5CisKICAgICBGaW5hbGl6
ZVJlbmRlcmluZ1VwZGF0ZShXZWJLaXQ6OlJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZ1VwZGF0
ZUlEKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDNiYTM0MWM2OGY2YjQz
M2VjYjE1ZTZkMDI1MzgyNDdlZTkxMTg2YzguLjg1YmU1MjFjMzEzNWIwZGY3N2I1ZTY1OTk2YzY3
OWQwNWM1MTI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC00Niw2ICs0Niwx
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllclJlbW90ZTsKIGNs
YXNzIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjsKIAorZW51bSBjbGFzcyBTZXRO
b25Wb2xhdGlsZVJlc3VsdCA6IHVpbnQ4X3QgeworICAgIE5vQnVmZmVyLAorICAgIEVtcHR5LAor
ICAgIFZhbGlkLAorfTsKKwogY2xhc3MgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTY1LDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TmVlZHNEaXNwbGF5KCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKFdURjo6TWFjaFNlbmRSaWdo
dCYmIHN1cmZhY2VIYW5kbGUpOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYmFja2luZyBz
dG9yZSBjaGFuZ2VkLgogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgV2ViQ29yZTo6RmxvYXRT
aXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KQEAgLTg5LDYgKzk2LDEwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY29udGVudHNCdWZmZXJIYW5kbGUgfHwgISFtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyOwogICAgIH0KIAorICAgIC8vIEp1c3QgZm9yIFJlbW90ZUJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24uCisgICAgdm9pZCBhcHBseVN3YXBwZWRCdWZmZXJzKFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBmcm9udCwgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiYmIGJhY2ssIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBzZWNvbmRhcnlCYWNrLCBi
b29sIGZyb250QnVmZmVyTmVlZHNEaXNwbGF5KTsKKyAgICB2b2lkIHN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIoKTsKKwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2Fm
ZUltYWdlQnVmZmVyRmx1c2hlcj4+IHRha2VQZW5kaW5nRmx1c2hlcnMoKTsKIAogICAgIGVudW0g
Y2xhc3MgQnVmZmVyVHlwZSB7CkBAIC05Nyw2ICsxMDgsMTEgQEAgcHVibGljOgogICAgICAgICBT
ZWNvbmRhcnlCYWNrCiAgICAgfTsKIAorICAgIHZvaWQgd2lsbE1ha2VCdWZmZXJWb2xhdGlsZShC
dWZmZXJUeXBlKTsKKyAgICB2b2lkIGRpZE1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKFNldE5v
blZvbGF0aWxlUmVzdWx0KTsKKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gYnVm
ZmVyRm9yVHlwZShCdWZmZXJUeXBlKSBjb25zdDsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBp
dCB3YXMgYWJsZSB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LiBUaGlzIGNhbiBmYWlsIHdoZW4gdHJ5
aW5nIHRvIG1hcmsgYW4gaW4tdXNlIHN1cmZhY2UgYXMgdm9sYXRpbGUuCiAgICAgYm9vbCBzZXRC
dWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSk7CiAKQEAgLTEwOCwx
NyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b24qIGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKSBjb25zdDsKIAogICAgIHZvaWQgZHJhd0luQ29u
dGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKLSAgICB2b2lkIHN3YXBUb1ZhbGlkRnJv
bnRCdWZmZXIoKTsKLQotICAgIGJvb2wgc3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpOwotCi0gICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwotCi0gICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG1fc2l6ZTsKLSAgICBmbG9hdCBtX3NjYWxlIHsgMS4wZiB9OwotICAgIGJvb2wgbV9pc09wYXF1
ZSB7IGZhbHNlIH07Ci0KLSAgICBXZWJDb3JlOjpSZWdpb24gbV9kaXJ0eVJlZ2lvbjsKIAogICAg
IHN0cnVjdCBCdWZmZXIgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwpAQCAtMTM1LDYgKzE0MCwyMSBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGRp
c2NhcmQoKTsKICAgICB9OwogCisgICAgYm9vbCBzZXRCdWZmZXJWb2xhdGlsZShCdWZmZXImKTsK
KyAgICBTZXROb25Wb2xhdGlsZVJlc3VsdCBzZXRCdWZmZXJOb25Wb2xhdGlsZShCdWZmZXImKTsK
KworICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKKworICAgIGJvb2wgc3VwcG9ydHNQYXJ0aWFsUmVw
YWludCgpIGNvbnN0OworCisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOworCisg
ICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKKyAgICBmbG9hdCBtX3NjYWxlIHsgMS4wZiB9
OworICAgIGJvb2wgbV9pc09wYXF1ZSB7IGZhbHNlIH07CisKKyAgICBXZWJDb3JlOjpSZWdpb24g
bV9kaXJ0eVJlZ2lvbjsKKwogICAgIC8vIFVzZWQgaW4gdGhlIFdlYkNvbnRlbnQgUHJvY2Vzcy4K
ICAgICBCdWZmZXIgbV9mcm9udEJ1ZmZlcjsKICAgICBCdWZmZXIgbV9iYWNrQnVmZmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IGVlNjY4YTJmNDE4NTEyODIyODQ3NGI4NGU5
NzBhZWFmZjY0MTMyZTMuLjM0Y2I3ZDMxNmE0MGUwMGE4NTZkZjMwODQzNWMwZTlmNjA0M2Y0YzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnMuaCIKICNpbXBvcnQgIkNHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCIKLSNpbXBvcnQgIk1hY2hQb3J0LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuaCIKICNpbXBvcnQgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgog
I2ltcG9ydCAiUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgiCkBAIC00MiwxMCAr
NDEsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvTW9kZWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVy
Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+Ci0jaW1wb3J0IDxtYWNoL21h
Y2hfcG9ydC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1w
b3J0IDx3dGYvY29jb2EvVHlwZUNhc3RzQ29jb2EuaD4KIApAQCAtMjE1LDYgKzIxMiw4IEBAIHVu
c2lnbmVkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpieXRlc1BlclBpeGVsKCkgY29uc3QKIAog
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpCiB7
CisgICAgQVNTRVJUKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CisKICAgICAvLyBTb21l
dGltZXMsIHdlIGNhbiBnZXQgdHdvIHN3YXBzIGFoZWFkIG9mIHRoZSByZW5kZXIgc2VydmVyLgog
ICAgIC8vIElmIHdlJ3JlIHVzaW5nIHNoYXJlZCBJT1N1cmZhY2VzLCB3ZSBtdXN0IHdhaXQgdG8g
bW9kaWZ5CiAgICAgLy8gYSBzdXJmYWNlIHVudGlsIGl0IG5vIGxvbmdlciBoYXMgb3V0c3RhbmRp
bmcgY2xpZW50cy4KQEAgLTIzMiwxNCArMjMxLDM4IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogCiAgICAgbV9jb250ZW50c0J1ZmZlckhh
bmRsZSA9IHN0ZDo6bnVsbG9wdDsKICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNr
QnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHNldEJ1ZmZlck5vblZvbGF0aWxlKG1fZnJvbnRC
dWZmZXIpOworICAgIGRpZE1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKHJlc3VsdCk7Cit9CisK
Ky8vIENhbGxlZCBhZnRlciBidWZmZXIgc3dhcHBpbmcgaW4gdGhlIEdQVSBwcm9jZXNzLgordm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlTd2FwcGVkQnVmZmVycyhSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+JiYgZnJvbnQsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4m
JiBiYWNrLCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgc2Vjb25kYXJ5QmFjaywgYm9v
bCBmcm9udEJ1ZmZlck5lZWRzRGlzcGxheSkKK3sKKyAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1
cnBvc2U6OkRPTSkpOworCisgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdURk1vdmUo
ZnJvbnQpOworICAgIG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlciA9IFdURk1vdmUoYmFjayk7Cisg
ICAgbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmltYWdlQnVmZmVyID0gV1RGTW92ZShzZWNvbmRhcnlC
YWNrKTsKKworICAgIG1fZnJvbnRCdWZmZXIuaXNWb2xhdGlsZSA9IGZhbHNlOworCisgICAgaWYg
KGZyb250QnVmZmVyTmVlZHNEaXNwbGF5KQorICAgICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKK30K
Kwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZlcnMoKQoreworICAgIG1f
Y29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAobV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlcikgewotICAgICAgICBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5
cGU6OkZyb250LCBmYWxzZSk7CisgICAgYXV0byogY29sbGVjdGlvbiA9IGJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24oKTsKKyAgICBpZiAoIWNvbGxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKLSAgICBpZiAoYXV0byogY29sbGVjdGlvbiA9IGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKSkK
LSAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IGNvbGxlY3Rpb24tPmFsbG9jYXRl
QnVmZmVyRm9yQmFja2luZ1N0b3JlKCp0aGlzKTsKKyAgICBjb2xsZWN0aW9uLT5zd2FwVG9WYWxp
ZEZyb250QnVmZmVyKCp0aGlzKTsKKyAgICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IGNvbGxl
Y3Rpb24tPmFsbG9jYXRlQnVmZmVyRm9yQmFja2luZ1N0b3JlKCp0aGlzKTsKIAogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBpZiAobV9pbmNsdWRl
RGlzcGxheUxpc3QgPT0gSW5jbHVkZURpc3BsYXlMaXN0OjpZZXMpCkBAIC0yNDcsNyArMjcwLDcg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigp
CiAjZW5kaWYKIH0KIAotYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0
aWFsUmVwYWludCgpCitib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXBwb3J0c1BhcnRp
YWxSZXBhaW50KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBzdXBwb3J0
IHBhcnRpYWwgcmVwYWludCBmb3IgYmFja2luZyBzdG9yZSB0aGF0CiAgICAgLy8gaW5jbHVkZXMg
YSBkaXNwbGF5IGxpc3Qgd2l0aG91dCBhbGxvd2luZyB1bmJvdW5kZWQgbWVtb3J5IGdyb3d0aC4K
QEAgLTI2Nyw5ICsyOTAsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSgpCiAKICAgICBtX2xhc3REaXNwbGF5VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogCi0g
ICAgYm9vbCBuZWVkVG9FbmNvZGVCYWNraW5nU3RvcmUgPSBmYWxzZTsKLSAgICBpZiAoYXV0byog
Y29sbGVjdGlvbiA9IGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKSkKLSAgICAgICAgbmVlZFRvRW5j
b2RlQmFja2luZ1N0b3JlID0gY29sbGVjdGlvbi0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVk
KCp0aGlzKTsKKyAgICBhdXRvKiBjb2xsZWN0aW9uID0gYmFja2luZ1N0b3JlQ29sbGVjdGlvbigp
OworICAgIGlmICghY29sbGVjdGlvbikgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGJvb2wgbmVlZFRvRW5jb2RlQmFj
a2luZ1N0b3JlID0gY29sbGVjdGlvbi0+YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKCp0aGlz
KTsKIAogICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZWxlZ2F0ZXNE
aXNwbGF5KG1fbGF5ZXIpKSB7CiAgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FM
YXllckxheWVyRGlzcGxheShtX2xheWVyKTsKQEAgLTI3OCw3ICszMDUsNyBAQCBib29sIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICB9CiAKICAgICAvLyBNYWtlIHRoZSBw
cmV2aW91cyBmcm9udCBidWZmZXIgbm9uLXZvbGF0aWxlIGVhcmx5LCBzbyB0aGF0IHdlIGNhbiBk
aXJ0eSB0aGUgd2hvbGUgbGF5ZXIgaWYgaXQgY29tZXMgYmFjayBlbXB0eS4KLSAgICBzZXRCdWZm
ZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CisgICAgY29sbGVjdGlvbi0+
bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoKnRoaXMpOwogCiAgICAgaWYgKG1fZGlydHlSZWdp
b24uaXNFbXB0eSgpIHx8IG1fc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBuZWVkVG9F
bmNvZGVCYWNraW5nU3RvcmU7CkBAIC0yOTIsMTEgKzMxOSwxMCBAQCBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgbV9kaXJ0eVJlZ2lvbi51bml0ZShpbmRp
Y2F0b3JSZWN0KTsKICAgICB9CiAKLSAgICBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCk7CisgICAg
c3dhcEJ1ZmZlcnMoKTsKICAgICBpZiAoIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0KICAgICBpZiAobV9pbmNsdWRlRGlzcGxheUxpc3QgPT0gSW5j
bHVkZURpc3BsYXlMaXN0OjpZZXMpIHsKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tF
RF9JTUFHRV9CVUZGRVIpCiAgICAgICAgIGF1dG8mIGRpc3BsYXlMaXN0Q29udGV4dCA9IG1fZnJv
bnRCdWZmZXIuZGlzcGxheUxpc3RJbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwpAQCAtNDk3LDYyICs1
MjMsMTAzIEBAIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlcj4+IFJlbW90ZUxheWVyQmFja2luCiAgICAgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV9mcm9udEJ1ZmZlckZsdXNoZXJzLCB7IH0pOwogfQogCi1ib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSwgYm9v
bCBpc1ZvbGF0aWxlKQorYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9s
YXRpbGUoQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgaWYgKG1fdHlwZSAhPSBUeXBlOjpJT1N1cmZh
Y2UpCisgICAgaWYgKCFidWZmZXIuaW1hZ2VCdWZmZXIgfHwgYnVmZmVyLmlzVm9sYXRpbGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgLy8gUmV0dXJuIHZhbHVlIGlzIHRydWUgaWYgd2Ug
c3VjY2VlZGVkIGluIG1ha2luZyB2b2xhdGlsZS4KLSAgICBhdXRvIG1ha2VWb2xhdGlsZSA9IFtd
IChCdWZmZXImIGJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgIGlmICghYnVmZmVyLmltYWdlQnVm
ZmVyIHx8IGJ1ZmZlci5pc1ZvbGF0aWxlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
YnVmZmVyLmltYWdlQnVmZmVyLT5yZWxlYXNlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgaWYgKGJ1
ZmZlci5pbWFnZUJ1ZmZlci0+c2V0Vm9sYXRpbGUoKSkgeworICAgICAgICBidWZmZXIuaXNWb2xh
dGlsZSA9IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CiAKLSAgICAgICAgYnVmZmVyLmltYWdlQnVmZmVyLT5yZWxlYXNlR3JhcGhpY3NDb250
ZXh0KCk7CitTZXROb25Wb2xhdGlsZVJlc3VsdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0
QnVmZmVyTm9uVm9sYXRpbGUoQnVmZmVyJiBidWZmZXIpCit7CisgICAgQVNTRVJUKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVu
ZGVyaW5nUHVycG9zZTo6RE9NKSk7CiAKLSAgICAgICAgaWYgKGJ1ZmZlci5pbWFnZUJ1ZmZlci0+
c2V0Vm9sYXRpbGUoKSkgewotICAgICAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH07CisgICAgaWYgKCFidWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJl
dHVybiBTZXROb25Wb2xhdGlsZVJlc3VsdDo6Tm9CdWZmZXI7CiAKLSAgICAvLyBSZXR1cm4gdmFs
dWUgaXMgdHJ1ZSBpZiB3ZSBuZWVkIHRvIHJlcGFpbnQuCi0gICAgYXV0byBtYWtlTm9uVm9sYXRp
bGUgPSBbXSAoQnVmZmVyJiBidWZmZXIpIC0+IGJvb2wgewotICAgICAgICBpZiAoIWJ1ZmZlci5p
bWFnZUJ1ZmZlciB8fCAhYnVmZmVyLmlzVm9sYXRpbGUpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCFidWZmZXIuaXNWb2xhdGlsZSkKKyAgICAgICAgcmV0dXJuIFNldE5vblZv
bGF0aWxlUmVzdWx0OjpWYWxpZDsKIAotICAgICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBidWZm
ZXIuaW1hZ2VCdWZmZXItPnNldE5vblZvbGF0aWxlKCk7Ci0gICAgICAgIGJ1ZmZlci5pc1ZvbGF0
aWxlID0gZmFsc2U7CisgICAgYXV0byBwcmV2aW91c1N0YXRlID0gYnVmZmVyLmltYWdlQnVmZmVy
LT5zZXROb25Wb2xhdGlsZSgpOworICAgIGJ1ZmZlci5pc1ZvbGF0aWxlID0gZmFsc2U7CisgICAg
cmV0dXJuIHByZXZpb3VzU3RhdGUgPT0gV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlOjpFbXB0eSA/
IFNldE5vblZvbGF0aWxlUmVzdWx0OjpFbXB0eSA6IFNldE5vblZvbGF0aWxlUmVzdWx0OjpWYWxp
ZDsKK30KIAotICAgICAgICByZXR1cm4gcHJldmlvdXNTdGF0ZSA9PSBXZWJDb3JlOjpWb2xhdGls
aXR5U3RhdGU6OkVtcHR5OwotICAgIH07Cit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp3
aWxsTWFrZUJ1ZmZlclZvbGF0aWxlKEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkKK3sKKyAgICBBU1NF
UlQoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdl
YkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpOworCisgICAgYXV0byBidWZmZXIgPSBidWZm
ZXJGb3JUeXBlKGJ1ZmZlclR5cGUpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvKiBiYWNrZW5kID0gYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOwor
ICAgIGlmICghYmFja2VuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2xlYXJpbmcgdGhl
IGJhY2tlbmQgaGFuZGxlIGluIHRoZSB3ZWJjb250ZW50IHByb2Nlc3MgaXMgbmVjZXNzYXJ5IHRv
IGhhdmUgdGhlIHN1cmZhY2UgaW4tdXNlIGNvdW50IGRyb3AgdG8gemVyby4KKyAgICBhdXRvKiBz
aGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgIGlmIChpczxJbWFnZUJ1
ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAgZG93bmNhc3Q8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNsZWFyQmFja2VuZEhhbmRs
ZSgpOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaWRNYWtlRnJvbnRCdWZm
ZXJOb25Wb2xhdGlsZShTZXROb25Wb2xhdGlsZVJlc3VsdCByZXN1bHQpCit7CisgICAgbV9mcm9u
dEJ1ZmZlci5pc1ZvbGF0aWxlID0gZmFsc2U7CisgICAgaWYgKHJlc3VsdCA9PSBTZXROb25Wb2xh
dGlsZVJlc3VsdDo6RW1wdHkpCisgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworfQorCitib29s
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUg
YnVmZmVyVHlwZSwgYm9vbCBpc1ZvbGF0aWxlKQoreworICAgIGlmIChtX3R5cGUgIT0gVHlwZTo6
SU9TdXJmYWNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHN3aXRjaCAoYnVmZmVyVHlw
ZSkgewotICAgIGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6CisgICAgY2FzZSBCdWZmZXJUeXBlOjpG
cm9udDogewogICAgICAgICBpZiAoaXNWb2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtl
Vm9sYXRpbGUobV9mcm9udEJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4gc2V0QnVmZmVyVm9s
YXRpbGUobV9mcm9udEJ1ZmZlcik7CiAgICAgICAgIAogICAgICAgICAvLyBCZWNvbWluZyBub24t
dm9sYXRpbGUgYW5kIHRoZSBmcm9udCBidWZmZXIgd2FzIHB1cmdlZCwgc28gd2UgbmVlZCB0byBy
ZXBhaW50LgotICAgICAgICBpZiAobWFrZU5vblZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpKQotICAg
ICAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gc2V0QnVm
ZmVyTm9uVm9sYXRpbGUobV9mcm9udEJ1ZmZlcik7CisgICAgICAgIGRpZE1ha2VGcm9udEJ1ZmZl
ck5vblZvbGF0aWxlKHJlc3VsdCk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIEJ1
ZmZlclR5cGU6OkJhY2s6CiAgICAgICAgIGlmIChpc1ZvbGF0aWxlKQotICAgICAgICAgICAgcmV0
dXJuIG1ha2VWb2xhdGlsZShtX2JhY2tCdWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIHNldEJ1
ZmZlclZvbGF0aWxlKG1fYmFja0J1ZmZlcik7CiAgICAgCi0gICAgICAgIG1ha2VOb25Wb2xhdGls
ZShtX2JhY2tCdWZmZXIpOworICAgICAgICBzZXRCdWZmZXJOb25Wb2xhdGlsZShtX2JhY2tCdWZm
ZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEJ1ZmZlclR5cGU6OlNlY29uZGFyeUJhY2s6
CiAgICAgICAgIGlmIChpc1ZvbGF0aWxlKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VWb2xhdGls
ZShtX3NlY29uZGFyeUJhY2tCdWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIHNldEJ1ZmZlclZv
bGF0aWxlKG1fc2Vjb25kYXJ5QmFja0J1ZmZlcik7CiAgICAgCi0gICAgICAgIG1ha2VOb25Wb2xh
dGlsZShtX3NlY29uZGFyeUJhY2tCdWZmZXIpOworICAgICAgICBzZXRCdWZmZXJOb25Wb2xhdGls
ZShtX3NlY29uZGFyeUJhY2tCdWZmZXIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK1JlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmJ1ZmZlckZvclR5cGUoQnVmZmVyVHlwZSBidWZmZXJUeXBlKSBjb25zdAor
eworICAgIHN3aXRjaCAoYnVmZmVyVHlwZSkgeworICAgIGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6
CisgICAgICAgIHJldHVybiBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOworICAgIGNhc2UgQnVm
ZmVyVHlwZTo6QmFjazoKKyAgICAgICAgcmV0dXJuIG1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZlcjsK
KyAgICBjYXNlIEJ1ZmZlclR5cGU6OlNlY29uZGFyeUJhY2s6CisgICAgICAgIHJldHVybiBtX3Nl
Y29uZGFyeUJhY2tCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgfQorICAgIHJldHVybiBudWxscHRy
OworfQorCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQoKQog
ewogICAgIGlzVm9sYXRpbGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uaAppbmRleCA1N2Y5ZTVhMjI0MzM3ZmJlMzZkZWFhNDZkNTA3NzU1YWNh
MWEyYzk0Li4wYWZhZTQzOTkxYTllOTVlMDJlODIwZDNlNDcwM2VkMjNhY2UyZjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCkBAIC01Miw2ICs1Miw5
IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJh
Y2tpbmcgc3RvcmUgbmVlZHMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRyYW5zYWN0aW9uLgogICAg
IGJvb2wgYmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Jik7CiAgICAgdm9pZCBiYWNraW5nU3RvcmVCZWNhbWVVbnJlYWNoYWJsZShSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZSYpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBtYWtlRnJvbnRCdWZmZXJOb25W
b2xhdGlsZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOworICAgIHZpcnR1YWwgdm9pZCBzd2Fw
VG9WYWxpZEZyb250QnVmZmVyKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJik7CiAKICAgICB2b2lk
IHdpbGxGbHVzaExheWVycygpOwogICAgIHZvaWQgd2lsbENvbW1pdExheWVyVHJlZShSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24ubW0KaW5kZXggODkyY2ExNDk4OWZjMmI1MDgzMDEzZjZjYmE4MDUwYTM3MDgz
OTcyNC4uZTVlMThhNjQ5NzFhZTYzYWM5ZTIwMGVjZmE4MWRiOGM0NjUwNDZmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlQ29sbGVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCkBAIC0xMDQsNiArMTA0
LDE2IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpiYWNraW5nU3Rv
cmVXaWxsQmVEaXNwbGF5ZWQoUmVtb3RlTGF5ZXJCCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjptYWtlRnJvbnRCdWZmZXJOb25W
b2xhdGlsZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlKQoreworICAgIGJh
Y2tpbmdTdG9yZS5zZXRCdWZmZXJWb2xhdGlsaXR5KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpC
dWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbjo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihSZW1vdGVMYXllckJhY2tpbmdT
dG9yZSYgYmFja2luZ1N0b3JlKQoreworICAgIGJhY2tpbmdTdG9yZS5zd2FwVG9WYWxpZEZyb250
QnVmZmVyKCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpt
YXJrQmFja2luZ1N0b3JlVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdT
dG9yZSwgT3B0aW9uU2V0PFZvbGF0aWxpdHlNYXJraW5nQmVoYXZpb3I+IG1hcmtpbmdCZWhhdmlv
ciwgTW9ub3RvbmljVGltZSBub3cpCiB7CiAgICAgQVNTRVJUKCFtX2luTGF5ZXJGbHVzaCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmlu
Z0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaAppbmRleCA2MTAwNTY4MzZjMzRmZGU3NjkwNGI0ZTdl
ZDdiNWIyNzA0NTUzYTE4Li4yOTI5Zjk3MTYyOTk3YTcyOGM4YmYwM2ZjYTA3ZmNkN2U4ZTlmOTIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVS
ZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGFsbG9jYXRlQnVmZmVyRm9yQmFj
a2luZ1N0b3JlKGNvbnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CiAgICAgCiAg
ICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKTsKKworICAgIHZvaWQgbWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUmKSBmaW5hbDsKKyAgICB2b2lkIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUmKSBmaW5hbDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVu
ZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbQppbmRleCBiNzE4MzkzNzU5ODExYTM2OTc5
ZGIyODk4YjM1NjFlYjU3YTM4MDZjLi40NTA2ZjE5MmI1ZWY2YzJhNDNhMzE4NmUyNjE3MTFmODY5
NzU0OWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRo
UmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbQpAQCAtNDEsNiArNDEsMzAg
QEAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5k
ZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW8KICAgICByZXR1cm4gbGF5ZXJUcmVlQ29udGV4dCgp
LmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogfQogCit2b2lkIFJlbW90ZUxh
eWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246Om1ha2VGcm9udEJ1
ZmZlck5vblZvbGF0aWxlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCit7
CisgICAgYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQoKS5l
bnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKyAgICBhdXRvIGZyb250QnVmZmVy
ID0gYmFja2luZ1N0b3JlLmJ1ZmZlckZvclR5cGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1
ZmZlclR5cGU6OkZyb250KTsKKyAgICBpZiAoIWZyb250QnVmZmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJlc3VsdCA9IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWFya1N1cmZhY2VO
b25Wb2xhdGlsZShmcm9udEJ1ZmZlci0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpOwor
ICAgIGJhY2tpbmdTdG9yZS5kaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShyZXN1bHQpOwor
fQorCit2b2lkIFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxl
Y3Rpb246OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJh
Y2tpbmdTdG9yZSkKK3sKKyAgICBhdXRvJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kID0gbGF5ZXJU
cmVlQ29udGV4dCgpLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOworCisgICAg
YXV0byBpZGVudGlmaWVycyA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6QnVmZmVyU2V0
IHsKKyAgICAgICAgYmFja2luZ1N0b3JlLmJ1ZmZlckZvclR5cGUoUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OkJ1ZmZlclR5cGU6OkZyb250KSwKKyAgICAgICAgYmFja2luZ1N0b3JlLmJ1ZmZlckZv
clR5cGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlclR5cGU6OkJhY2spLAorICAgICAg
ICBiYWNraW5nU3RvcmUuYnVmZmVyRm9yVHlwZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVm
ZmVyVHlwZTo6U2Vjb25kYXJ5QmFjaykKKyAgICB9OworICAgIGF1dG8gc3dhcFJlc3VsdCA9IHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihXVEZNb3ZlKGlkZW50
aWZpZXJzKSk7CisgICAgYmFja2luZ1N0b3JlLmFwcGx5U3dhcHBlZEJ1ZmZlcnMoV1RGTW92ZShz
d2FwUmVzdWx0LmJ1ZmZlcnMuZnJvbnQpLCBXVEZNb3ZlKHN3YXBSZXN1bHQuYnVmZmVycy5iYWNr
KSwgV1RGTW92ZShzd2FwUmVzdWx0LmJ1ZmZlcnMuc2Vjb25kYXJ5QmFjayksIHN3YXBSZXN1bHQu
ZnJvbnRCdWZmZXJXYXNFbXB0eSk7Cit9CisKIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6YWxs
b2NhdGVCdWZmZXJGb3JCYWNraW5nU3RvcmUoY29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
IGJhY2tpbmdTdG9yZSkKIHsKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSBiYWNraW5nU3RvcmUu
dHlwZSgpID09IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpUeXBlOjpJT1N1cmZhY2UgPyBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zy5oCmluZGV4IDQwMjhkMmQ3NzhhZDhjNGRmZjIzOTNiYzYxMDg2NDU2MTFkYzY2OTcuLmY1N2Fm
MTkyNDM0NWE1NjYzYWY1NzBmNDQzM2YyZWViNjc4ZGVjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hh
cmluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oCkBAIC0zNiw2ICszNiw5IEBAIGNsYXNzIEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VCdWZmZXJC
YWNrZW5kU2hhcmluCiBwdWJsaWM6CiAgICAgdmlydHVhbCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUgY3JlYXRlQmFja2VuZEhhbmRsZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZW5kSGFuZGxlKEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSYmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJCYWNrZW5kSGFuZGxlKCkgeyB9CisKIHByaXZhdGU6CiAgICAgYm9vbCBp
c0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4
IGM0NTNiNWU4MWNjOGFmN2ViNjRiODBhNzcyODQ3YTI4OGUzMDc4YzUuLjZlMTY2MDcwNGYzMjdj
NmNlZWI4MTFiN2QwYTg2OTZjZTZhMThjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlLmgiIC8vIEZvciBTZXRWb2xhdGlsZVJlc3VsdC4KICNpbmNsdWRlICJSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAtMTQ1
LDcgKzE0Niw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKLWJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1ZmZlckZv
ckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1
ZmZlciwgY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0LCBTcGFuPHVpbnQ4X3Q+IHJlc3VsdCkK
K2Jvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1ZmZlckZvckltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgY29uc3QgUGl4
ZWxCdWZmZXJGb3JtYXQmIGRlc3RpbmF0aW9uRm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0
LCBTcGFuPHVpbnQ4X3Q+IHJlc3VsdCkKIHsKICAgICBpZiAoYXV0byBoYW5kbGUgPSB1cGRhdGVT
aGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcihyZXN1bHQuc2l6ZSgpKSkgewogICAgICAgICBT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBpcGNIYW5kbGUgeyBXVEZNb3ZlKCpoYW5kbGUpLCBtX2dl
dFBpeGVsQnVmZmVyU2hhcmVkTWVtb3J5LT5zaXplKCkgfTsKQEAgLTE2NCw3ICsxNjUsNyBAQCBi
b29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpSZW5kZXJpbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFdlYkNv
cmU6OlBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlc3RQb2ludCwgV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVyLCBjb25zdCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9pbnQsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gZGVzdEZvcm1hdCkKIHsKICAgICBzZW5kVG9TdHJlYW0oTWVzc2FnZXM6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlB1dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoaW1hZ2VC
dWZmZXIsIHBpeGVsQnVmZmVyLCBzcmNSZWN0LCBkZXN0UG9pbnQsIGRlc3RGb3JtYXQpKTsKIH0K
QEAgLTI2NCw2ICsyNjUsNzIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWYKICAgICBzZW5kVG9T
dHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKTsKIH0KIAorYXV0byBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoY29uc3QgQnVmZmVyU2V0
JiBidWZmZXJzKSAtPiBTd2FwQnVmZmVyc1Jlc3VsdAoreworICAgIGF1dG8gYnVmZmVySWRlbnRp
ZmllciA9IFtdKEltYWdlQnVmZmVyKiBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiB7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+cmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCk7CisgICAgfTsKKworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyPiBwb3N0U3dhcEZyb250SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcG9zdFN3YXBCYWNrSWRlbnRpZmll
cjsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcG9zdFN3
YXBTZWNvbmRhcnlCYWNrSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZT4gZnJvbnRCdWZmZXJIYW5kbGU7CisgICAgYm9vbCBmcm9udEJ1ZmZlcldh
c0VtcHR5ID0gZmFsc2U7CisgICAgCisgICAgc2VuZFN5bmNUb1N0cmVhbShNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6U3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihidWZmZXJJZGVudGlm
aWVyKGJ1ZmZlcnMuZnJvbnQuZ2V0KCkpLCBidWZmZXJJZGVudGlmaWVyKGJ1ZmZlcnMuYmFjay5n
ZXQoKSksIGJ1ZmZlcklkZW50aWZpZXIoYnVmZmVycy5zZWNvbmRhcnlCYWNrLmdldCgpKSksCisg
ICAgICAgIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpTd2FwVG9WYWxpZEZyb250
QnVmZmVyOjpSZXBseShwb3N0U3dhcEZyb250SWRlbnRpZmllciwgcG9zdFN3YXBCYWNrSWRlbnRp
ZmllciwgcG9zdFN3YXBTZWNvbmRhcnlCYWNrSWRlbnRpZmllciwgZnJvbnRCdWZmZXJIYW5kbGUs
IGZyb250QnVmZmVyV2FzRW1wdHkpKTsKKworICAgIGF1dG8gZmV0Y2hCdWZmZXJXaXRoSWRlbnRp
ZmllciA9IFsmXShzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRl
bnRpZmllciwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgaGFuZGxl
ID0gc3RkOjpudWxsb3B0KSAtPiBSZWZQdHI8SW1hZ2VCdWZmZXI+IHsKKyAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byog
YnVmZmVyID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKmlk
ZW50aWZpZXIpOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgCisgICAgICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvKiBiYWNrZW5kID0gYnVmZmVyLT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAg
ICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4o
c2hhcmluZykpCisgICAgICAgICAgICAgICAgICAgIGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5zZXRCYWNrZW5kSGFuZGxlKFdURk1vdmUoKmhhbmRs
ZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsK
KyAgICB9OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgeworICAgICAgICAgICAgZmV0Y2hCdWZm
ZXJXaXRoSWRlbnRpZmllcihwb3N0U3dhcEZyb250SWRlbnRpZmllciwgV1RGTW92ZShmcm9udEJ1
ZmZlckhhbmRsZSkpLAorICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihwb3N0
U3dhcEJhY2tJZGVudGlmaWVyKSwKKyAgICAgICAgICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZp
ZXIocG9zdFN3YXBTZWNvbmRhcnlCYWNrSWRlbnRpZmllcikKKyAgICAgICAgfSwKKyAgICAgICAg
ZnJvbnRCdWZmZXJXYXNFbXB0eQorICAgIH07Cit9CisKK1NldE5vblZvbGF0aWxlUmVzdWx0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZShSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBib29sIGJ1ZmZlcldhc0Vt
cHR5OworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5k
SGFuZGxlOworICAgIHNlbmRTeW5jVG9TdHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6Ok1hcmtTdXJmYWNlTm9uVm9sYXRpbGUoaWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpNYXJrU3VyZmFjZU5vblZvbGF0aWxlOjpSZXBseShiYWNrZW5k
SGFuZGxlLCBidWZmZXJXYXNFbXB0eSkpOworCisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShz
dHJlYW0gPDwgIlNNRlIgV2ViIFByb2Nlc3M6IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
bWFya1N1cmZhY2VOb25Wb2xhdGlsZSAiIDw8IGlkZW50aWZpZXIgPDwgIiB3YXMgZW1wdHkgIiA8
PCBidWZmZXJXYXNFbXB0eSk7CisKKyAgICBhdXRvIGJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VD
YWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVyKGlkZW50aWZpZXIpOworICAgIGlmIChiYWNrZW5k
SGFuZGxlICYmIGJ1ZmZlcikgeworICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGJ1ZmZlci0+
ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgeworICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJh
Y2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAgICAgICAgIGlmIChpczxJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAgICAgICAgICAgICAgICBkb3duY2Fz
dDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZykuc2V0QmFja2VuZEhh
bmRsZShXVEZNb3ZlKCpiYWNrZW5kSGFuZGxlKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gYnVmZmVyV2FzRW1wdHkgPyBTZXROb25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkgOiBTZXRO
b25Wb2xhdGlsZVJlc3VsdDo6VmFsaWQ7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CiAgICAgc2VuZFRvU3RyZWFtKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSht
X3JlbmRlcmluZ1VwZGF0ZUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
aAppbmRleCBiYTI0YzdhZTMwMzgwYTBiYWZiYTYxM2JkMzNiOGQ4Y2MwZTAyYThlLi5iMzFjOTdm
ZDcxZTc3ZjhmYmVmYTQ0MTA2Zjc5M2YzZDc0ZmIyYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgKQEAgLTYxLDYgKzYxLDcgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdN
b2RlIDogYm9vbDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOworZW51bSBj
bGFzcyBTZXROb25Wb2xhdGlsZVJlc3VsdCA6IHVpbnQ4X3Q7CiAKIGNsYXNzIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eQogICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAt
OTQsNiArOTUsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKICAgICB2
b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogCisgICAgU2V0Tm9uVm9sYXRpbGVSZXN1bHQgbWFya1N1cmZhY2VOb25Wb2xhdGls
ZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworCisgICAgc3RydWN0IEJ1
ZmZlclNldCB7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gZnJvbnQ7Cisg
ICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gYmFjazsKKyAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OkltYWdlQnVmZmVyPiBzZWNvbmRhcnlCYWNrOworICAgIH07CisgICAgCisgICAg
c3RydWN0IFN3YXBCdWZmZXJzUmVzdWx0IHsKKyAgICAgICAgQnVmZmVyU2V0IGJ1ZmZlcnM7Cisg
ICAgICAgIGJvb2wgZnJvbnRCdWZmZXJXYXNFbXB0eSB7IGZhbHNlIH07CisgICAgfTsKKyAgICBT
d2FwQnVmZmVyc1Jlc3VsdCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKGNvbnN0IEJ1ZmZlclNldCYp
OworCiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIFJlbmRlcmluZ1Vw
ZGF0ZUlEIHJlbmRlcmluZ1VwZGF0ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdVcGRh
dGVJRDsgfQogICAgIHVuc2lnbmVkIGRlbGF5ZWRSZW5kZXJpbmdVcGRhdGVDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nVXBkYXRlSUQgLSBtX2RpZFJlbmRlcmluZ1VwZGF0ZUlEOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFj
a2VuZC5jcHAKaW5kZXggZGY3YzdmMjQ5ODIzNTM4YWQ2MzUyNTQ5Y2M2ZTE4ZDkwNDZiYTMyNC4u
ODNhMTYyNWI2OWZmYmJhZGMxYjA2YzhmMzY4OTY0ZWM3MGExZTQ3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90
ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAt
NjksNiArNjksMTYgQEAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFja2VuZEhhbmRsZSgKICAgICByZXR1cm4gc3RkOjpn
ZXQ8TWFjaFNlbmRSaWdodD4obV9oYW5kbGUpLmNvcHlTZW5kUmlnaHQoKTsKIH0KIAordm9pZCBJ
bWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OnNldEJhY2tlbmRIYW5kbGUoSW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlJiYgaGFuZGxlKQoreworICAgIG1faGFuZGxlID0gV1RGTW92ZSho
YW5kbGUpOworfQorCit2b2lkIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y2xl
YXJCYWNrZW5kSGFuZGxlKCkKK3sKKyAgICBtX2hhbmRsZSA9IHsgfTsKK30KKwogR3JhcGhpY3ND
b250ZXh0JiBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25z
dAogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3Rl
SU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaAppbmRleCBiNWI2NzJh
YjQ3YmMzYTQ5Nzk3OTNmOTM3YzhjM2IzMjI5YTdiZDY1Li5kZmIwZmU5ZGFjNTEwOTNhMzRlODE1
MWI3ODZmZGM4ZmNlZWM0OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgKQEAgLTcxLDkgKzcxLDExIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBvcmlnaW5BdEJvdHRvbUxlZnRDb3JuZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBp
c09yaWdpbkF0Qm90dG9tTGVmdENvcm5lcjsgfQogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3co
KSBjb25zdCBmaW5hbDsKLSAgICAKKwogICAgIC8vIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcK
ICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFyaW5nKiB0b0JhY2tlbmRTaGFyaW5nKCkgZmluYWwg
eyByZXR1cm4gdGhpczsgfQorICAgIHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGUmJikgZmluYWw7CisgICAgdm9pZCBjbGVhckJhY2tlbmRIYW5kbGUoKSBmaW5h
bDsKIAogICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBtX2hhbmRsZTsKIH07Cg==
</data>
<flag name="review"
          id="479230"
          type_id="1"
          status="+"
          setter="thorton"
    />
    <flag name="commit-queue"
          id="479274"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452273</attachid>
            <date>2022-02-16 16:55:57 -0800</date>
            <delta_ts>2022-02-16 20:48:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236731-20220216165556.patch</filename>
            <type>text/plain</type>
            <size>44197</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZDg4MTk3NjQ1N2MxNzY4
OWEzYmFlOWJhMjk5YzYzNDk5ODQ5ODAuLmU3NDFhZDY1YmI4OTZkZjZkNTU2NzAyZThjYTdiM2Fl
ZTNiMjY0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjItMDItMTYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHNldHRpbmcgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgYnVmZmVycyBub24tdm9sYXRpbGUgaW4g
dGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzY3MzEKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIENhbGxzIHRvIHNldFZvbGF0aWxlKCkgYW5kIGlzSW5Vc2UoKSBvbiBJT1N1cmZhY2UgbmVl
ZCB0byBoYXBwZW4gaW4gdGhlIEdQVSBQcm9jZXNzLAorICAgICAgICBzbyB3aGVuIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlIHN3YXBzIGJ1ZmZlcnMgaW4gZGlzcGxheSgpLCBhbmQgbWFrZXMgdGhl
IGZyb250IGJ1ZmZlcgorICAgICAgICBub24tdm9sYXRpbGUsIHRob3NlIHRoaW5ncyBuZWVkIHRv
IGdvIHZpYSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLgorICAgICAgICAKKyAgICAgICAgU28gcGx1
bWIgbWFya1N1cmZhY2VOb25Wb2xhdGlsZSgpIGFuZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkg
dGhyb3VnaCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24KKyAgICAgICAgYW5kIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQsIGJvdGggYXMgc3luYyBtZXNzYWdlcy4KKyAgICAgICAgCisg
ICAgICAgIEluIGJvdGggY2FzZXMsIGlmIHRoZSBzdXJmYWNlIHdhcyBwdXJnZWQgKGkuZS4gc2V0
Tm9uVm9sYXRpbGUgcmV0dXJuZWQgRW1wdHkpIHdlIG5lZWQKKyAgICAgICAgdG8gdHJpZ2dlciBh
IHNldE5lZWRzRGlzcGxheSgpLCB3aXJlZCB0aHJvdWdoIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZSgpCisgICAgICAgIHNvIHRoZXJlJ3Mgb25s
eSBvbmUgY2FsbCBzaXRlLgorCisgICAgICAgIFdlIGFsc28gbmVlZCB0byBhbHdheXMgc2VuZCB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGJhY2sgZnJvbSB0aGUgR1BVIFByb2Nlc3MgZm9y
CisgICAgICAgIHRoZSBmcm9udCBidWZmZXIsIHNpbmNlIGEgZnV0dXJlIHBhdGNoIHdpbGwgY2xl
YXIgdGhlc2Ugb3V0IGluIHRoZSB3ZWIgcHJvY2VzcyB3aGVuCisgICAgICAgIG1ha2luZyBidWZm
ZXJzIHZvbGF0aWxlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1hcmtTdXJmYWNlTm9uVm9s
YXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzd2FwVG9W
YWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBlZEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFs
UmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNl
dEJ1ZmZlclZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnNldEJ1ZmZlck5vblZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OndpbGxNYWtlQnVmZmVyVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRp
bGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpidWZmZXJG
b3JUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmg6CisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVy
aW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmg6CisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc6OnNldEJhY2tlbmRIYW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpjbGVh
ckJhY2tlbmRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kOjpzZXRCYWNrZW5kSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjbGVhckJhY2tlbmRIYW5kbGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5oOgorCiAyMDIyLTAyLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGRvd25jYXN0PD4gdG8gd29yayB3aXRoIEltYWdl
QnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cAppbmRleCAwOTA1YTRjNWZhZWRkOTdlNWIwMDQwNDRmOWQ4M2I3Zjk0NGRkZmE3Li5kZTk0ZmJi
NjViZmFmZDIxNTg0M2YwZTFjNzYyYzQ1MjgyY2YzZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJCdWZmZXJJZGVudGlmaWVyU2V0LmgiCiAjaW5jbHVkZSAiRmlsdGVyUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTM4NCw2ICszODUsNzIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpy
ZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWYKICAgICBt
X3JlbW90ZURpc3BsYXlMaXN0cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5k
bGVGcm9tQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byog
YmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlmICghYmFja2Vu
ZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBi
YWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNyZWF0ZUJhY2tlbmRIYW5kbGUo
KTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gYmFja2VuZEhhbmRsZSwgYm9vbCBidWZmZXJX
YXNFbXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcih7IGlkZW50aWZpZXIsIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9KTsKKyAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBiYWNrZW5kSGFuZGxlID0g
aGFuZGxlRnJvbUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9
IGltYWdlQnVmZmVyLT5zZXROb25Wb2xhdGlsZSgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoYmFja2VuZEhhbmRsZSksIHByZXZpb3VzU3RhdGUgPT0gVm9sYXRpbGl0eVN0YXRlOjpF
bXB0eSk7Cit9CisKKy8vIFRoaXMgaXMgdGhlIEdQVSBQcm9jZXNzIHZlcnNpb24gb2YgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKS4KK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihjb25zdCBCdWZmZXJJZGVu
dGlmaWVyU2V0JiBidWZmZXJTZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQnVmZmVy
SWRlbnRpZmllclNldCYgc3dhcHBlZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGU+JiYgZnJvbnRCdWZmZXJIYW5kbGUsIGJvb2wgZnJvbnRCdWZmZXJXYXNF
bXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBmZXRjaEJ1ZmZlciA9IFsm
XShzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikg
LT4gSW1hZ2VCdWZmZXIqIHsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPyBtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqaWRlbnRpZmllciwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pIDogbnVsbHB0cjsKKyAg
ICB9OworCisgICAgYXV0byBmcm9udEJ1ZmZlciA9IGZldGNoQnVmZmVyKGJ1ZmZlclNldC5mcm9u
dCk7CisgICAgYXV0byBiYWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIoYnVmZmVyU2V0LmJhY2spOwor
ICAgIGF1dG8gc2Vjb25kYXJ5QmFja0J1ZmZlciA9IGZldGNoQnVmZmVyKGJ1ZmZlclNldC5zZWNv
bmRhcnlCYWNrKTsKKworICAgIGlmICghYmFja0J1ZmZlciB8fCBiYWNrQnVmZmVyLT5pc0luVXNl
KCkpIHsKKyAgICAgICAgc3RkOjpzd2FwKGJhY2tCdWZmZXIsIHNlY29uZGFyeUJhY2tCdWZmZXIp
OworCisgICAgICAgIC8vIFdoZW4gcHVsbGluZyB0aGUgc2Vjb25kYXJ5IGJhY2sgYnVmZmVyIG91
dCBvZiBoaWJlcm5hdGlvbiAodG8gYmVjb21lCisgICAgICAgIC8vIHRoZSBuZXcgZnJvbnQgYnVm
ZmVyKSwgaWYgaXQgaXMgc29tZWhvdyBzdGlsbCBpbiB1c2UgKGUuZy4gd2UgZ290CisgICAgICAg
IC8vIHRocmVlIHN3YXBzIGFoZWFkIG9mIHRoZSByZW5kZXIgc2VydmVyKSwganVzdCBnaXZlIHVw
IGFuZCBkaXNjYXJkIGl0LgorICAgICAgICBpZiAoYmFja0J1ZmZlciAmJiBiYWNrQnVmZmVyLT5p
c0luVXNlKCkpCisgICAgICAgICAgICBiYWNrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBzdGQ6OnN3YXAoZnJvbnRCdWZmZXIsIGJhY2tCdWZmZXIpOworCisgICAgc3RkOjpvcHRpb25h
bDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGZyb250QnVmZmVySGFuZGxlOworICAgIGJvb2wg
ZnJvbnRCdWZmZXJXYXNFbXB0eSA9IGZhbHNlOworICAgIGlmIChmcm9udEJ1ZmZlcikgeworICAg
ICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBmcm9udEJ1ZmZlci0+c2V0Tm9uVm9sYXRpbGUoKTsK
KyAgICAgICAgZnJvbnRCdWZmZXJXYXNFbXB0eSA9IHByZXZpb3VzU3RhdGUgPT0gVm9sYXRpbGl0
eVN0YXRlOjpFbXB0eTsKKyAgICAgICAgZnJvbnRCdWZmZXJIYW5kbGUgPSBoYW5kbGVGcm9tQnVm
ZmVyKCpmcm9udEJ1ZmZlcik7CisgICAgfQorCisgICAgYXV0byBidWZmZXJJZGVudGlmZXIgPSBb
XShJbWFnZUJ1ZmZlciogYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4geworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBidWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpOworICAgIH07CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IGJ1ZmZlcklkZW50
aWZlcihmcm9udEJ1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihiYWNrQnVmZmVyKSwgYnVmZmVySWRl
bnRpZmVyKHNlY29uZGFyeUJhY2tCdWZmZXIpIH0sIFdURk1vdmUoZnJvbnRCdWZmZXJIYW5kbGUp
LCBmcm9udEJ1ZmZlcldhc0VtcHR5KTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJpbmdVcGRh
dGVJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OkRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHJlbmRlcmluZ1VwZGF0ZUlEKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBhYTY2MDRmMzgy
NDkwZjExYzcyMzk5OTcxMzc0ZDQzNDg5ZmJjZGJkLi4xMzE1YzBhY2IwZDg0YmU1NDRhMmYyNmQw
OWE0NTIxYWFiODBmZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY3LDYgKzY3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBj
bGFzcyBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOworc3RydWN0IEJ1ZmZlcklkZW50aWZpZXJT
ZXQ7CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAog
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewpAQCAtMTE4LDYgKzExOSw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KFJlbmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIHZvaWQgbWFya1N1cmZhY2VOb25Wb2xhdGlsZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+LCBib29sIGJ1ZmZlcldh
c0VtcHR5KT4mJik7CisgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKGNvbnN0IEJ1ZmZl
cklkZW50aWZpZXJTZXQmIGJ1ZmZlclNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBC
dWZmZXJJZGVudGlmaWVyU2V0JiBzd2FwcGVkQnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZT4mJiBmcm9udEJ1ZmZlckhhbmRsZSwgYm9vbCBmcm9udEJ1ZmZl
cldhc0VtcHR5KT4mJik7CisKICAgICAvLyBSZWNlaXZlZCBtZXNzYWdlcyB0cmFuc2xhdGVkIHRv
IHVzZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCiAgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggZmQ0MjA3MDAwNjc1NGQwNjIzMzgxMDM2Y2E0
ZjdhMjE4MTZlMTAwNC4uYWE3OWU2OGRjZGRkNzU1N2RkMGVmYTFjYTRiOTNhMjczZmVlM2RiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDEw
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCBTdHJl
YW0gewogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkgTm90U3RyZWFtRW5j
b2RhYmxlCiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQorCisgICAgTWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gYmFja2VuZEhhbmRsZSwg
Ym9vbCBidWZmZXJXYXNFbXB0eSkgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkK
KyAgICBTd2FwVG9WYWxpZEZyb250QnVmZmVyKHN0cnVjdCBXZWJLaXQ6OkJ1ZmZlcklkZW50aWZp
ZXJTZXQgYnVmZmVyU2V0KSAtPiAoc3RydWN0IFdlYktpdDo6QnVmZmVySWRlbnRpZmllclNldCBz
d2FwcGVkQnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZSwgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5KSBTeW5j
aHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorCiAgICAgRmluYWxpemVSZW5kZXJpbmdV
cGRhdGUoV2ViS2l0OjpSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJpbmdVcGRhdGVJRCkKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCAzYmEzNDFjNjhmNmI0MzNlY2IxNWU2ZDAy
NTM4MjQ3ZWU5MTE4NmM4Li44NWJlNTIxYzMxMzViMGRmNzdiNWU2NTk5NmM2NzlkMDVjNTEyODM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNDYsNiArNDYsMTIgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU7CiBjbGFzcyBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb247CiAKK2VudW0gY2xhc3MgU2V0Tm9uVm9sYXRpbGVS
ZXN1bHQgOiB1aW50OF90IHsKKyAgICBOb0J1ZmZlciwKKyAgICBFbXB0eSwKKyAgICBWYWxpZCwK
K307CisKIGNsYXNzIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC02NSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzRGlzcGxh
eSgpOwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhXVEY6Ok1hY2hTZW5kUmlnaHQmJiBzdXJmYWNl
SGFuZGxlKTsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGJhY2tpbmcgc3RvcmUgY2hhbmdl
ZC4KICAgICBib29sIGRpc3BsYXkoKTsKIAogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9CkBAIC04OSw2ICs5NiwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX2NvbnRlbnRzQnVmZmVySGFuZGxlIHx8ICEhbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlcjsKICAgICB9CiAKKyAgICAvLyBKdXN0IGZvciBSZW1vdGVCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uLgorICAgIHZvaWQgYXBwbHlTd2FwcGVkQnVmZmVycyhSZWZQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+JiYgZnJvbnQsIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJiBiYWNrLCBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgc2Vjb25kYXJ5QmFjaywgYm9vbCBmcm9udEJ1
ZmZlck5lZWRzRGlzcGxheSk7CisgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCk7CisK
ICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXI+PiB0YWtlUGVuZGluZ0ZsdXNoZXJzKCk7CiAKICAgICBlbnVtIGNsYXNzIEJ1ZmZl
clR5cGUgewpAQCAtOTcsNiArMTA4LDExIEBAIHB1YmxpYzoKICAgICAgICAgU2Vjb25kYXJ5QmFj
awogICAgIH07CiAKKyAgICB2b2lkIHdpbGxNYWtlQnVmZmVyVm9sYXRpbGUoQnVmZmVyVHlwZSk7
CisgICAgdm9pZCBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShTZXROb25Wb2xhdGlsZVJl
c3VsdCk7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGJ1ZmZlckZvclR5cGUo
QnVmZmVyVHlwZSkgY29uc3Q7CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgd2FzIGFibGUg
dG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4gVGhpcyBjYW4gZmFpbCB3aGVuIHRyeWluZyB0byBtYXJr
IGFuIGluLXVzZSBzdXJmYWNlIGFzIHZvbGF0aWxlLgogICAgIGJvb2wgc2V0QnVmZmVyVm9sYXRp
bGl0eShCdWZmZXJUeXBlLCBib29sIGlzVm9sYXRpbGUpOwogCkBAIC0xMDgsMTcgKzEyNCw2IEBA
IHByaXZhdGU6CiAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uKiBiYWNraW5n
U3RvcmVDb2xsZWN0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGRyYXdJbkNvbnRleHQoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCk7
Ci0KLSAgICBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKTsKLQotICAgIFBsYXRmb3JtQ0FM
YXllclJlbW90ZSogbV9sYXllcjsKLQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NpemU7Ci0g
ICAgZmxvYXQgbV9zY2FsZSB7IDEuMGYgfTsKLSAgICBib29sIG1faXNPcGFxdWUgeyBmYWxzZSB9
OwotCi0gICAgV2ViQ29yZTo6UmVnaW9uIG1fZGlydHlSZWdpb247CiAKICAgICBzdHJ1Y3QgQnVm
ZmVyIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsK
QEAgLTEzNSw2ICsxNDAsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaXNjYXJkKCk7CiAg
ICAgfTsKIAorICAgIGJvb2wgc2V0QnVmZmVyVm9sYXRpbGUoQnVmZmVyJik7CisgICAgU2V0Tm9u
Vm9sYXRpbGVSZXN1bHQgc2V0QnVmZmVyTm9uVm9sYXRpbGUoQnVmZmVyJik7CisKKyAgICB2b2lk
IHN3YXBCdWZmZXJzKCk7CisKKyAgICBib29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKSBjb25z
dDsKKworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZSogbV9sYXllcjsKKworICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBtX3NpemU7CisgICAgZmxvYXQgbV9zY2FsZSB7IDEuMGYgfTsKKyAgICBib29s
IG1faXNPcGFxdWUgeyBmYWxzZSB9OworCisgICAgV2ViQ29yZTo6UmVnaW9uIG1fZGlydHlSZWdp
b247CisKICAgICAvLyBVc2VkIGluIHRoZSBXZWJDb250ZW50IFByb2Nlc3MuCiAgICAgQnVmZmVy
IG1fZnJvbnRCdWZmZXI7CiAgICAgQnVmZmVyIG1fYmFja0J1ZmZlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQppbmRleCBlZTY2OGEyZjQxODUxMjgyMjg0NzRiODRlOTcwYWVhZmY2NDEz
MmUzLi4zNGNiN2QzMTZhNDBlMDBhODU2ZGYzMDg0MzVjMGU5ZjYwNDNmNGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQgIkFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgi
Ci0jaW1wb3J0ICJNYWNoUG9ydC5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbXBvcnQgIlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIgpAQCAtNDIsMTAgKzQxLDggQEAKICNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJD
b3JlL01vZGVsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgotI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL2Nv
Y29hL1R5cGVDYXN0c0NvY29hLmg+CiAKQEAgLTIxNSw2ICsyMTIsOCBAQCB1bnNpZ25lZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0ZXNQZXJQaXhlbCgpIGNvbnN0CiAKIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogeworICAgIEFTU0VS
VCghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdl
YkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpOworCiAgICAgLy8gU29tZXRpbWVzLCB3ZSBj
YW4gZ2V0IHR3byBzd2FwcyBhaGVhZCBvZiB0aGUgcmVuZGVyIHNlcnZlci4KICAgICAvLyBJZiB3
ZSdyZSB1c2luZyBzaGFyZWQgSU9TdXJmYWNlcywgd2UgbXVzdCB3YWl0IHRvIG1vZGlmeQogICAg
IC8vIGEgc3VyZmFjZSB1bnRpbCBpdCBubyBsb25nZXIgaGFzIG91dHN0YW5kaW5nIGNsaWVudHMu
CkBAIC0yMzIsMTQgKzIzMSwzOCBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2Fw
VG9WYWxpZEZyb250QnVmZmVyKCkKIAogICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6
Om51bGxvcHQ7CiAgICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7Cisg
ICAgYXV0byByZXN1bHQgPSBzZXRCdWZmZXJOb25Wb2xhdGlsZShtX2Zyb250QnVmZmVyKTsKKyAg
ICBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShyZXN1bHQpOworfQorCisvLyBDYWxsZWQg
YWZ0ZXIgYnVmZmVyIHN3YXBwaW5nIGluIHRoZSBHUFUgcHJvY2Vzcy4KK3ZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBlZEJ1ZmZlcnMoUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgYmFjaywgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNlY29uZGFyeUJhY2ssIGJvb2wgZnJvbnRCdWZm
ZXJOZWVkc0Rpc3BsYXkpCit7CisgICAgQVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNo
b3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00p
KTsKKworICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGZyb250KTsKKyAg
ICBtX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGJhY2spOworICAgIG1fc2Vjb25k
YXJ5QmFja0J1ZmZlci5pbWFnZUJ1ZmZlciA9IFdURk1vdmUoc2Vjb25kYXJ5QmFjayk7CisKKyAg
ICBtX2Zyb250QnVmZmVyLmlzVm9sYXRpbGUgPSBmYWxzZTsKKworICAgIGlmIChmcm9udEJ1ZmZl
ck5lZWRzRGlzcGxheSkKKyAgICAgICAgc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzKCkKK3sKKyAgICBtX2NvbnRlbnRzQnVm
ZmVySGFuZGxlID0gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VC
dWZmZXIpIHsKLSAgICAgICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwg
ZmFsc2UpOworICAgIGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7
CisgICAgaWYgKCFjb2xsZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYg
KGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCkpCi0gICAgICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBjb2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJh
Y2tpbmdTdG9yZSgqdGhpcyk7CisgICAgY29sbGVjdGlvbi0+c3dhcFRvVmFsaWRGcm9udEJ1ZmZl
cigqdGhpcyk7CisgICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBjb2xsZWN0aW9uLT5hbGxv
Y2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZSgqdGhpcyk7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExB
WV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0
ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKQpAQCAtMjQ3LDcgKzI3MCw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogI2VuZGlmCiB9
CiAKLWJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQo
KQorYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gc3VwcG9ydCBwYXJ0aWFsIHJl
cGFpbnQgZm9yIGJhY2tpbmcgc3RvcmUgdGhhdAogICAgIC8vIGluY2x1ZGVzIGEgZGlzcGxheSBs
aXN0IHdpdGhvdXQgYWxsb3dpbmcgdW5ib3VuZGVkIG1lbW9yeSBncm93dGguCkBAIC0yNjcsOSAr
MjkwLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAg
bV9sYXN0RGlzcGxheVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIAotICAgIGJvb2wgbmVl
ZFRvRW5jb2RlQmFja2luZ1N0b3JlID0gZmFsc2U7Ci0gICAgaWYgKGF1dG8qIGNvbGxlY3Rpb24g
PSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCkpCi0gICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdT
dG9yZSA9IGNvbGxlY3Rpb24tPmJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7Cisg
ICAgYXV0byogY29sbGVjdGlvbiA9IGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKTsKKyAgICBpZiAo
IWNvbGxlY3Rpb24pIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9
IGNvbGxlY3Rpb24tPmJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CiAKICAgICBp
ZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xh
eWVyKSkgewogICAgICAgICBtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRp
c3BsYXkobV9sYXllcik7CkBAIC0yNzgsNyArMzA1LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgfQogCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJv
bnQgYnVmZmVyIG5vbi12b2xhdGlsZSBlYXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdo
b2xlIGxheWVyIGlmIGl0IGNvbWVzIGJhY2sgZW1wdHkuCi0gICAgc2V0QnVmZmVyVm9sYXRpbGl0
eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOworICAgIGNvbGxlY3Rpb24tPm1ha2VGcm9udEJ1
ZmZlck5vblZvbGF0aWxlKCp0aGlzKTsKIAogICAgIGlmIChtX2RpcnR5UmVnaW9uLmlzRW1wdHko
KSB8fCBtX3NpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbmVlZFRvRW5jb2RlQmFja2lu
Z1N0b3JlOwpAQCAtMjkyLDExICszMTksMTAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGlzcGxheSgpCiAgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7
CiAgICAgfQogCi0gICAgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOworICAgIHN3YXBCdWZmZXJz
KCk7CiAgICAgaWYgKCFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotCiAgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5
TGlzdDo6WWVzKSB7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQogICAgICAgICBhdXRvJiBkaXNwbGF5TGlzdENvbnRleHQgPSBtX2Zyb250QnVmZmVyLmRp
c3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKQEAgLTQ5Nyw2MiArNTIzLDEwMyBAQCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+PiBSZW1vdGVMYXllckJhY2tpbgogICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRC
dWZmZXJGbHVzaGVycywgeyB9KTsKIH0KIAotYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIGJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGls
ZSkKK2Jvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxlKEJ1ZmZl
ciYgYnVmZmVyKQogewotICAgIGlmIChtX3R5cGUgIT0gVHlwZTo6SU9TdXJmYWNlKQorICAgIGlm
ICghYnVmZmVyLmltYWdlQnVmZmVyIHx8IGJ1ZmZlci5pc1ZvbGF0aWxlKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIC8vIFJldHVybiB2YWx1ZSBpcyB0cnVlIGlmIHdlIHN1Y2NlZWRlZCBp
biBtYWtpbmcgdm9sYXRpbGUuCi0gICAgYXV0byBtYWtlVm9sYXRpbGUgPSBbXSAoQnVmZmVyJiBi
dWZmZXIpIC0+IGJvb2wgewotICAgICAgICBpZiAoIWJ1ZmZlci5pbWFnZUJ1ZmZlciB8fCBidWZm
ZXIuaXNWb2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIGJ1ZmZlci5pbWFn
ZUJ1ZmZlci0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOworICAgIGlmIChidWZmZXIuaW1hZ2VC
dWZmZXItPnNldFZvbGF0aWxlKCkpIHsKKyAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSB0cnVl
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0g
ICAgICAgIGJ1ZmZlci5pbWFnZUJ1ZmZlci0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOworU2V0
Tm9uVm9sYXRpbGVSZXN1bHQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlck5vblZv
bGF0aWxlKEJ1ZmZlciYgYnVmZmVyKQoreworICAgIEFTU0VSVCghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBv
c2U6OkRPTSkpOwogCi0gICAgICAgIGlmIChidWZmZXIuaW1hZ2VCdWZmZXItPnNldFZvbGF0aWxl
KCkpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5pc1ZvbGF0aWxlID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9OworICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gU2V0Tm9u
Vm9sYXRpbGVSZXN1bHQ6Ok5vQnVmZmVyOwogCi0gICAgLy8gUmV0dXJuIHZhbHVlIGlzIHRydWUg
aWYgd2UgbmVlZCB0byByZXBhaW50LgotICAgIGF1dG8gbWFrZU5vblZvbGF0aWxlID0gW10gKEJ1
ZmZlciYgYnVmZmVyKSAtPiBib29sIHsKLSAgICAgICAgaWYgKCFidWZmZXIuaW1hZ2VCdWZmZXIg
fHwgIWJ1ZmZlci5pc1ZvbGF0aWxlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghYnVmZmVyLmlzVm9sYXRpbGUpCisgICAgICAgIHJldHVybiBTZXROb25Wb2xhdGlsZVJlc3Vs
dDo6VmFsaWQ7CiAKLSAgICAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gYnVmZmVyLmltYWdlQnVm
ZmVyLT5zZXROb25Wb2xhdGlsZSgpOwotICAgICAgICBidWZmZXIuaXNWb2xhdGlsZSA9IGZhbHNl
OworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9IGJ1ZmZlci5pbWFnZUJ1ZmZlci0+c2V0Tm9uVm9s
YXRpbGUoKTsKKyAgICBidWZmZXIuaXNWb2xhdGlsZSA9IGZhbHNlOworICAgIHJldHVybiBwcmV2
aW91c1N0YXRlID09IFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZTo6RW1wdHkgPyBTZXROb25Wb2xh
dGlsZVJlc3VsdDo6RW1wdHkgOiBTZXROb25Wb2xhdGlsZVJlc3VsdDo6VmFsaWQ7Cit9CiAKLSAg
ICAgICAgcmV0dXJuIHByZXZpb3VzU3RhdGUgPT0gV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlOjpF
bXB0eTsKLSAgICB9Owordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6d2lsbE1ha2VCdWZm
ZXJWb2xhdGlsZShCdWZmZXJUeXBlIGJ1ZmZlclR5cGUpCit7CisgICAgQVNTRVJUKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5k
ZXJpbmdQdXJwb3NlOjpET00pKTsKKworICAgIGF1dG8gYnVmZmVyID0gYnVmZmVyRm9yVHlwZShi
dWZmZXJUeXBlKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogYmFja2VuZCA9IGJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsKKyAgICBpZiAoIWJh
Y2tlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENsZWFyaW5nIHRoZSBiYWNrZW5kIGhh
bmRsZSBpbiB0aGUgd2ViY29udGVudCBwcm9jZXNzIGlzIG5lY2Vzc2FyeSB0byBoYXZlIHRoZSBz
dXJmYWNlIGluLXVzZSBjb3VudCBkcm9wIHRvIHplcm8uCisgICAgYXV0byogc2hhcmluZyA9IGJh
Y2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgIGRvd25jYXN0PEltYWdlQnVmZmVyQmFj
a2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5nKS5jbGVhckJhY2tlbmRIYW5kbGUoKTsKK30KKwor
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRp
bGUoU2V0Tm9uVm9sYXRpbGVSZXN1bHQgcmVzdWx0KQoreworICAgIG1fZnJvbnRCdWZmZXIuaXNW
b2xhdGlsZSA9IGZhbHNlOworICAgIGlmIChyZXN1bHQgPT0gU2V0Tm9uVm9sYXRpbGVSZXN1bHQ6
OkVtcHR5KQorICAgICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKK30KKworYm9vbCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIGJ1ZmZlclR5cGUs
IGJvb2wgaXNWb2xhdGlsZSkKK3sKKyAgICBpZiAobV90eXBlICE9IFR5cGU6OklPU3VyZmFjZSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKLSAgICBj
YXNlIEJ1ZmZlclR5cGU6OkZyb250OgorICAgIGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6IHsKICAg
ICAgICAgaWYgKGlzVm9sYXRpbGUpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVZvbGF0aWxlKG1f
ZnJvbnRCdWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIHNldEJ1ZmZlclZvbGF0aWxlKG1fZnJv
bnRCdWZmZXIpOwogICAgICAgICAKICAgICAgICAgLy8gQmVjb21pbmcgbm9uLXZvbGF0aWxlIGFu
ZCB0aGUgZnJvbnQgYnVmZmVyIHdhcyBwdXJnZWQsIHNvIHdlIG5lZWQgdG8gcmVwYWludC4KLSAg
ICAgICAgaWYgKG1ha2VOb25Wb2xhdGlsZShtX2Zyb250QnVmZmVyKSkKLSAgICAgICAgICAgIHNl
dE5lZWRzRGlzcGxheSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHNldEJ1ZmZlck5vblZvbGF0
aWxlKG1fZnJvbnRCdWZmZXIpOworICAgICAgICBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGls
ZShyZXN1bHQpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBCdWZmZXJUeXBlOjpC
YWNrOgogICAgICAgICBpZiAoaXNWb2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVm9s
YXRpbGUobV9iYWNrQnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRCdWZmZXJWb2xhdGls
ZShtX2JhY2tCdWZmZXIpOwogICAgIAotICAgICAgICBtYWtlTm9uVm9sYXRpbGUobV9iYWNrQnVm
ZmVyKTsKKyAgICAgICAgc2V0QnVmZmVyTm9uVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBCdWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrOgogICAgICAgICBp
ZiAoaXNWb2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVm9sYXRpbGUobV9zZWNvbmRh
cnlCYWNrQnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBzZXRCdWZmZXJWb2xhdGlsZShtX3Nl
Y29uZGFyeUJhY2tCdWZmZXIpOwogICAgIAotICAgICAgICBtYWtlTm9uVm9sYXRpbGUobV9zZWNv
bmRhcnlCYWNrQnVmZmVyKTsKKyAgICAgICAgc2V0QnVmZmVyTm9uVm9sYXRpbGUobV9zZWNvbmRh
cnlCYWNrQnVmZmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwog
fQogCitSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpidWZmZXJGb3JUeXBlKEJ1ZmZlclR5cGUgYnVmZmVyVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0
Y2ggKGJ1ZmZlclR5cGUpIHsKKyAgICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250OgorICAgICAgICBy
ZXR1cm4gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcjsKKyAgICBjYXNlIEJ1ZmZlclR5cGU6OkJh
Y2s6CisgICAgICAgIHJldHVybiBtX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgY2FzZSBC
dWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrOgorICAgICAgICByZXR1cm4gbV9zZWNvbmRhcnlCYWNr
QnVmZmVyLmltYWdlQnVmZmVyOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkKIHsKICAgICBpc1Zv
bGF0aWxlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0
aW9uLmgKaW5kZXggNTdmOWU1YTIyNDMzN2ZiZTM2ZGVhYTQ2ZDUwNzc1NWFjYTFhMmM5NC4uMGFm
YWU0Mzk5MWE5ZTk1ZTAyZTgyMGQzZTQ3MDNlZDIzYWNlMmYzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIHZhbHVlIGluZGljYXRlcyB3aGV0aGVyIHRoZSBiYWNraW5nIHN0b3Jl
IG5lZWRzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSB0cmFuc2FjdGlvbi4KICAgICBib29sIGJhY2tp
bmdTdG9yZVdpbGxCZURpc3BsYXllZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOwogICAgIHZv
aWQgYmFja2luZ1N0b3JlQmVjYW1lVW5yZWFjaGFibGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
KTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcFRvVmFsaWRGcm9u
dEJ1ZmZlcihSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOwogCiAgICAgdm9pZCB3aWxsRmx1c2hM
YXllcnMoKTsKICAgICB2b2lkIHdpbGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9u
Lm1tCmluZGV4IDg5MmNhMTQ5ODlmYzJiNTA4MzAxM2Y2Y2JhODA1MGEzNzA4Mzk3MjQuLmU1ZTE4
YTY0OTcxYWU2M2FjOWUyMDBlY2ZhODFkYjhjNDY1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbQpAQCAtMTA0LDYgKzEwNCwxNiBAQCBib29s
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGlz
cGxheWVkKFJlbW90ZUxheWVyQgogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBiYWNraW5nU3RvcmUu
c2V0QnVmZmVyVm9sYXRpbGl0eShSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyVHlwZTo6
RnJvbnQsIGZhbHNlKTsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b246OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tp
bmdTdG9yZSkKK3sKKyAgICBiYWNraW5nU3RvcmUuc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwor
fQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFya0JhY2tpbmdT
dG9yZVZvbGF0aWxlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIE9wdGlv
blNldDxWb2xhdGlsaXR5TWFya2luZ0JlaGF2aW9yPiBtYXJraW5nQmVoYXZpb3IsIE1vbm90b25p
Y1RpbWUgbm93KQogewogICAgIEFTU0VSVCghbV9pbkxheWVyRmx1c2gpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90
ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uLmgKaW5kZXggNjEwMDU2ODM2YzM0ZmRlNzY5MDRiNGU3ZWQ3YjViMjcwNDU1
M2ExOC4uMjkyOWY5NzE2Mjk5N2E3MjhjOGJmMDNmY2EwN2ZjZDdlOGU5ZjkyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJl
bW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5oCkBAIC00Miw2ICs0Miw5IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBhbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZShj
b25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpIGZpbmFsOwogICAgIAogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisKKyAg
ICB2b2lkIG1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
JikgZmluYWw7CisgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlJikgZmluYWw7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhS
ZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tp
bmdTdG9yZUNvbGxlY3Rpb24ubW0KaW5kZXggYjcxODM5Mzc1OTgxMWEzNjk3OWRiMjg5OGIzNTYx
ZWI1N2EzODA2Yy4uNDUwNmYxOTJiNWVmNmMyYTQzYTMxODZlMjYxNzExZjg2OTc1NDllMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
V2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRl
cmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KQEAgLTQxLDYgKzQxLDMwIEBAIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2lu
Z1N0b3JlQ29sbGVjdGlvCiAgICAgcmV0dXJuIGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKIH0KIAordm9pZCBSZW1vdGVMYXllcldpdGhSZW1v
dGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjptYWtlRnJvbnRCdWZmZXJOb25Wb2xh
dGlsZShSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0b3JlKQoreworICAgIGF1dG8m
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgPSBsYXllclRyZWVDb250ZXh0KCkuZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisgICAgYXV0byBmcm9udEJ1ZmZlciA9IGJhY2tpbmdT
dG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpG
cm9udCk7CisgICAgaWYgKCFmcm9udEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byByZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1hcmtTdXJmYWNlTm9uVm9sYXRpbGUo
ZnJvbnRCdWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBiYWNraW5n
U3RvcmUuZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUocmVzdWx0KTsKK30KKwordm9pZCBS
ZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpzd2Fw
VG9WYWxpZEZyb250QnVmZmVyKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUp
Cit7CisgICAgYXV0byYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQo
KS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKTsKKworICAgIGF1dG8gaWRlbnRp
ZmllcnMgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkJ1ZmZlclNldCB7CisgICAgICAg
IGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZm
ZXJUeXBlOjpGcm9udCksCisgICAgICAgIGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpCYWNrKSwKKyAgICAgICAgYmFja2luZ1N0
b3JlLmJ1ZmZlckZvclR5cGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlclR5cGU6OlNl
Y29uZGFyeUJhY2spCisgICAgfTsKKyAgICBhdXRvIHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoV1RGTW92ZShpZGVudGlmaWVycykpOwor
ICAgIGJhY2tpbmdTdG9yZS5hcHBseVN3YXBwZWRCdWZmZXJzKFdURk1vdmUoc3dhcFJlc3VsdC5i
dWZmZXJzLmZyb250KSwgV1RGTW92ZShzd2FwUmVzdWx0LmJ1ZmZlcnMuYmFjayksIFdURk1vdmUo
c3dhcFJlc3VsdC5idWZmZXJzLnNlY29uZGFyeUJhY2spLCBzd2FwUmVzdWx0LmZyb250QnVmZmVy
V2FzRW1wdHkpOworfQorCiBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IFJlbW90ZUxheWVy
V2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb246OmFsbG9jYXRlQnVmZmVy
Rm9yQmFja2luZ1N0b3JlKGNvbnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3Rv
cmUpCiB7CiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gYmFja2luZ1N0b3JlLnR5cGUoKSA9PSBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6VHlwZTo6SU9TdXJmYWNlID8gV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggZjI1MDY0NjUwMzQxODBlMjMzNmJkOWE5ZmE3ZjgyYzQ2MTFmYjVhMC4uZDc0ZTk5MmI3
NGY2ZTEyZTIzYTEwMzhjMDFjMjg3OTFhY2M1OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAzLDYgKzI2MDMsNyBAQAogCQkw
RjgwMjY0NzI3QUI0QUVGMDBFQzZFRDcgLyogUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5n
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllcldpdGhS
ZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGODUwRkU0MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
UGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY4NTBGRTUxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dp
bmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4NjM2MUIyN0JEQzJC
NjAwNkU2RDUyIC8qIEJ1ZmZlcklkZW50aWZpZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVy
SWRlbnRpZmllclNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQTE4
QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFB
MThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFD
MUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtOTc4NCw2ICs5Nzg1LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQw
Nzg1MjcwMDREMjkzMSAvKiBjb2NvYSAqLywKIAkJCQkxQ0I3NDYxOTI3NDM2REUzMDBGMTk4NzQg
LyogV2ViR1BVICovLAorCQkJCTBGODYzNjFCMjdCREMyQjYwMDZFNkQ1MiAvKiBCdWZmZXJJZGVu
dGlmaWVyU2V0LmggKi8sCiAJCQkJN0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNz
Q29udGV4dEdMSWRlbnRpZmllci5oICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAv
KiBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaCAqLywKIAkJCQkwRkE3NDY3RTI3QkI2MTE4MDBC
NUZGNUEgLyogSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZy5oICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9CdWZmZXJJZGVudGlmaWVy
U2V0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0J1ZmZlcklkZW50
aWZpZXJTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTJmMTI0OGNlOWUxYTc5OTNmZjFiMDE4MzUyOTcwZWM0
OTM0Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9CdWZmZXJJZGVudGlmaWVyU2V0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3N0cnVjdCBCdWZmZXJJZGVudGlmaWVyU2V0IHsKKyAgICBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gZnJvbnQ7CisgICAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGJhY2s7CisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNlY29uZGFy
eUJhY2s7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8QnVmZmVySWRlbnRpZmllclNldD4gZGVjb2RlKERlY29kZXImKTsKK307CisKKwordGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQnVmZmVySWRlbnRpZmllclNldDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBmcm9udDsKKyAgICBlbmNvZGVy
IDw8IGJhY2s7CisgICAgZW5jb2RlciA8PCBzZWNvbmRhcnlCYWNrOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxCdWZmZXJJZGVudGlmaWVyU2V0PiBCdWZmZXJJ
ZGVudGlmaWVyU2V0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlv
bmFsPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4g
ZnJvbnRJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gZnJvbnRJZGVudGlmaWVyOworICAgIGlm
ICghZnJvbnRJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
c3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4+IGJhY2tJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gYmFja0lkZW50aWZpZXI7
CisgICAgaWYgKCFiYWNrSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI+PiBzZWNvbmRhcnlCYWNrSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IHNlY29uZGFyeUJhY2tJZGVudGlmaWVyOworICAgIGlmICghc2Vjb25kYXJ5QmFja0lkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQnVmZmVySWRl
bnRpZmllclNldCB7ICpmcm9udElkZW50aWZpZXIsICpiYWNrSWRlbnRpZmllciwgKnNlY29uZGFy
eUJhY2tJZGVudGlmaWVyIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRs
ZVNoYXJpbmcuaAppbmRleCA0MDI4ZDJkNzc4YWQ4YzRkZmYyMzkzYmM2MTA4NjQ1NjExZGM2Njk3
Li5mNTdhZjE5MjQzNDVhNTY2M2FmNTcwZjQ0MzNmMmVlYjY3OGRlYzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaApAQCAtMzYsNiArMzYsOSBAQCBjbGFz
cyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nIDogcHVibGljIFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZFNoYXJpbgogcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlIGNyZWF0ZUJhY2tlbmRIYW5kbGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZEhhbmRsZSgpIHsgfQorCiBwcml2YXRlOgogICAg
IGJvb2wgaXNJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAppbmRleCBjNDUzYjVlODFjYzhhZjdlYjY0YjgwYTc3Mjg0N2EyODhlMzA3OGM1Li5iMTcyMzMw
Yjc2OGYwZjE3YTc1OWE3ZWVlYmM4MDg5YTQ3YTdkMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0yOCw5ICsyOCwxMSBAQAogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCisjaW5jbHVkZSAiQnVmZmVySWRlbnRpZmllclNldC5oIgogI2luY2x1ZGUg
IkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaCIgLy8gRm9yIFNldFZvbGF0aWxlUmVzdWx0LgogI2luY2x1ZGUg
IlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCkBAIC0xNDUsNyArMTQ3LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2kKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6Omdl
dFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGltYWdlQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCYgZGVz
dGluYXRpb25Gb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIFNwYW48dWlu
dDhfdD4gcmVzdWx0KQorYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmdldFBpeGVs
QnVmZmVyRm9ySW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlQnVm
ZmVyLCBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZGVzdGluYXRpb25Gb3JtYXQsIGNvbnN0IElu
dFJlY3QmIHNyY1JlY3QsIFNwYW48dWludDhfdD4gcmVzdWx0KQogewogICAgIGlmIChhdXRvIGhh
bmRsZSA9IHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHJlc3VsdC5zaXplKCkp
KSB7CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIGlwY0hhbmRsZSB7IFdURk1vdmUo
KmhhbmRsZSksIG1fZ2V0UGl4ZWxCdWZmZXJTaGFyZWRNZW1vcnktPnNpemUoKSB9OwpAQCAtMTY0
LDcgKzE2Niw3IEBAIGJvb2wgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpnZXRQaXhlbEJ1
ZmZlckZvckltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwdXRQaXhlbEJ1ZmZlckZvcklt
YWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZl
ciwgY29uc3QgV2ViQ29yZTo6UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZGVzdFBvaW50LCBX
ZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCit2b2lkIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFBpeGVsQnVmZmVyJiBwaXhl
bEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2lu
dCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KQogewogICAgIHNlbmRUb1N0cmVh
bShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UHV0UGl4ZWxCdWZmZXJGb3JJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlciwgcGl4ZWxCdWZmZXIsIHNyY1JlY3QsIGRlc3RQb2ludCwgZGVz
dEZvcm1hdCkpOwogfQpAQCAtMjY0LDYgKzI2Niw3NiBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZgogICAgIHNlbmRUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6UmVs
ZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpOwogfQogCith
dXRvIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihj
b25zdCBCdWZmZXJTZXQmIGJ1ZmZlcnMpIC0+IFN3YXBCdWZmZXJzUmVzdWx0Cit7CisgICAgYXV0
byBidWZmZXJJZGVudGlmaWVyID0gW10oSW1hZ2VCdWZmZXIqIGJ1ZmZlcikgLT4gc3RkOjpvcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHsKKyAgICAgICAgaWYgKCFidWZmZXIp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gYnVmZmVy
LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICB9OworCisgICAgYXV0byBidWZm
ZXJTZXQgPSBCdWZmZXJJZGVudGlmaWVyU2V0IHsKKyAgICAgICAgYnVmZmVySWRlbnRpZmllcihi
dWZmZXJzLmZyb250LmdldCgpKSwKKyAgICAgICAgYnVmZmVySWRlbnRpZmllcihidWZmZXJzLmJh
Y2suZ2V0KCkpLAorICAgICAgICBidWZmZXJJZGVudGlmaWVyKGJ1ZmZlcnMuc2Vjb25kYXJ5QmFj
ay5nZXQoKSkKKyAgICB9OworICAgIAorICAgIEJ1ZmZlcklkZW50aWZpZXJTZXQgc3dhcHBlZEJ1
ZmZlclNldDsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gZnJv
bnRCdWZmZXJIYW5kbGU7CisgICAgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5ID0gZmFsc2U7Cisg
ICAgCisgICAgc2VuZFN5bmNUb1N0cmVhbShNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6U3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihidWZmZXJTZXQpLAorICAgICAgICBNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6U3dhcFRvVmFsaWRGcm9udEJ1ZmZlcjo6UmVwbHkoc3dh
cHBlZEJ1ZmZlclNldCwgZnJvbnRCdWZmZXJIYW5kbGUsIGZyb250QnVmZmVyV2FzRW1wdHkpKTsK
KworICAgIGF1dG8gZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllciA9IFsmXShzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxJ
bWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+JiYgaGFuZGxlID0gc3RkOjpudWxsb3B0KSAtPiBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IHsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgYXV0byogYnVmZmVyID0gbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHkuY2FjaGVkSW1hZ2VCdWZmZXIoKmlkZW50aWZpZXIpOworICAgICAgICBpZiAo
IWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgCisgICAg
ICAgIGlmIChoYW5kbGUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gYnVmZmVy
LT5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CisgICAgICAgICAgICAgICAgYXV0byogc2hhcmlu
ZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXM8
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICAg
ICAgICAgIGRvd25jYXN0PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KCpzaGFyaW5n
KS5zZXRCYWNrZW5kSGFuZGxlKFdURk1vdmUoKmhhbmRsZSkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9OworCisgICAgcmV0dXJuIHsK
KyAgICAgICAgeworICAgICAgICAgICAgZmV0Y2hCdWZmZXJXaXRoSWRlbnRpZmllcihzd2FwcGVk
QnVmZmVyU2V0LmZyb250LCBXVEZNb3ZlKGZyb250QnVmZmVySGFuZGxlKSksCisgICAgICAgICAg
ICBmZXRjaEJ1ZmZlcldpdGhJZGVudGlmaWVyKHN3YXBwZWRCdWZmZXJTZXQuYmFjayksCisgICAg
ICAgICAgICBmZXRjaEJ1ZmZlcldpdGhJZGVudGlmaWVyKHN3YXBwZWRCdWZmZXJTZXQuc2Vjb25k
YXJ5QmFjaykKKyAgICAgICAgfSwKKyAgICAgICAgZnJvbnRCdWZmZXJXYXNFbXB0eQorICAgIH07
Cit9CisKK1NldE5vblZvbGF0aWxlUmVzdWx0IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
bWFya1N1cmZhY2VOb25Wb2xhdGlsZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBib29sIGJ1ZmZlcldhc0VtcHR5OworICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5kSGFuZGxlOworICAgIHNlbmRTeW5jVG9TdHJl
YW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ok1hcmtTdXJmYWNlTm9uVm9sYXRp
bGUoaWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpNYXJrU3Vy
ZmFjZU5vblZvbGF0aWxlOjpSZXBseShiYWNrZW5kSGFuZGxlLCBidWZmZXJXYXNFbXB0eSkpOwor
CisgICAgQUxXQVlTX0xPR19XSVRIX1NUUkVBTShzdHJlYW0gPDwgIlNNRlIgV2ViIFByb2Nlc3M6
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZSAiIDw8
IGlkZW50aWZpZXIgPDwgIiB3YXMgZW1wdHkgIiA8PCBidWZmZXJXYXNFbXB0eSk7CisKKyAgICBh
dXRvIGJ1ZmZlciA9IG1fcmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNhY2hlZEltYWdlQnVmZmVy
KGlkZW50aWZpZXIpOworICAgIGlmIChiYWNrZW5kSGFuZGxlICYmIGJ1ZmZlcikgeworICAgICAg
ICBpZiAoYXV0byogYmFja2VuZCA9IGJ1ZmZlci0+ZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkgewor
ICAgICAgICAgICAgYXV0byogc2hhcmluZyA9IGJhY2tlbmQtPnRvQmFja2VuZFNoYXJpbmcoKTsK
KyAgICAgICAgICAgIGlmIChpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFy
aW5nKSkKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVT
aGFyaW5nPigqc2hhcmluZykuc2V0QmFja2VuZEhhbmRsZShXVEZNb3ZlKCpiYWNrZW5kSGFuZGxl
KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyV2FzRW1wdHkgPyBTZXRO
b25Wb2xhdGlsZVJlc3VsdDo6RW1wdHkgOiBTZXROb25Wb2xhdGlsZVJlc3VsdDo6VmFsaWQ7Cit9
CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZSgpCiB7CiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShtX3JlbmRlcmluZ1VwZGF0ZUlEKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBiYTI0YzdhZTMwMzgwYTBiYWZi
YTYxM2JkMzNiOGQ4Y2MwZTAyYThlLi5iMzFjOTdmZDcxZTc3ZjhmYmVmYTQ0MTA2Zjc5M2YzZDc0
ZmIyYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTYxLDYg
KzYxLDcgQEAgZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJQYWdlOworZW51bSBjbGFzcyBTZXROb25Wb2xhdGlsZVJlc3VsdCA6
IHVpbnQ4X3Q7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eQogICAgIDogcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtOTQsNiArOTUsMjAgQEAgcHVibGljOgogICAg
IHZvaWQgZGVsZXRlQWxsRm9udHMoKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCisgICAgU2V0Tm9uVm9sYXRp
bGVSZXN1bHQgbWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOworCisgICAgc3RydWN0IEJ1ZmZlclNldCB7CisgICAgICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gZnJvbnQ7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gYmFjazsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBzZWNv
bmRhcnlCYWNrOworICAgIH07CisgICAgCisgICAgc3RydWN0IFN3YXBCdWZmZXJzUmVzdWx0IHsK
KyAgICAgICAgQnVmZmVyU2V0IGJ1ZmZlcnM7CisgICAgICAgIGJvb2wgZnJvbnRCdWZmZXJXYXNF
bXB0eSB7IGZhbHNlIH07CisgICAgfTsKKyAgICBTd2FwQnVmZmVyc1Jlc3VsdCBzd2FwVG9WYWxp
ZEZyb250QnVmZmVyKGNvbnN0IEJ1ZmZlclNldCYpOworCiAgICAgdm9pZCBmaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZSgpOwogICAgIFJlbmRlcmluZ1VwZGF0ZUlEIHJlbmRlcmluZ1VwZGF0ZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdVcGRhdGVJRDsgfQogICAgIHVuc2lnbmVkIGRlbGF5
ZWRSZW5kZXJpbmdVcGRhdGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nVXBkYXRl
SUQgLSBtX2RpZFJlbmRlcmluZ1VwZGF0ZUlEOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKaW5kZXggZGY3YzdmMjQ5ODIz
NTM4YWQ2MzUyNTQ5Y2M2ZTE4ZDkwNDZiYTMyNC4uODNhMTYyNWI2OWZmYmJhZGMxYjA2YzhmMzY4
OTY0ZWM3MGExZTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJS
ZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtNjksNiArNjksMTYgQEAgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlQmFj
a2VuZEhhbmRsZSgKICAgICByZXR1cm4gc3RkOjpnZXQ8TWFjaFNlbmRSaWdodD4obV9oYW5kbGUp
LmNvcHlTZW5kUmlnaHQoKTsKIH0KIAordm9pZCBJbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJh
Y2tlbmQ6OnNldEJhY2tlbmRIYW5kbGUoSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlJiYgaGFuZGxl
KQoreworICAgIG1faGFuZGxlID0gV1RGTW92ZShoYW5kbGUpOworfQorCit2b2lkIEltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y2xlYXJCYWNrZW5kSGFuZGxlKCkKK3sKKyAgICBt
X2hhbmRsZSA9IHsgfTsKK30KKwogR3JhcGhpY3NDb250ZXh0JiBJbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlP
U3VyZmFjZUJhY2tlbmQuaAppbmRleCBiNWI2NzJhYjQ3YmMzYTQ5Nzk3OTNmOTM3YzhjM2IzMjI5
YTdiZDY1Li5kZmIwZmU5ZGFjNTEwOTNhMzRlODE1MWI3ODZmZGM4ZmNlZWM0OWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgK
QEAgLTcxLDkgKzcxLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5BdEJvdHRvbUxlZnRD
b3JuZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBpc09yaWdpbkF0Qm90dG9tTGVmdENvcm5lcjsg
fQogCiAgICAgdW5zaWduZWQgYnl0ZXNQZXJSb3coKSBjb25zdCBmaW5hbDsKLSAgICAKKwogICAg
IC8vIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcKICAgICBJbWFnZUJ1ZmZlckJhY2tlbmRTaGFy
aW5nKiB0b0JhY2tlbmRTaGFyaW5nKCkgZmluYWwgeyByZXR1cm4gdGhpczsgfQorICAgIHZvaWQg
c2V0QmFja2VuZEhhbmRsZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgZmluYWw7CisgICAg
dm9pZCBjbGVhckJhY2tlbmRIYW5kbGUoKSBmaW5hbDsKIAogICAgIEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZSBtX2hhbmRsZTsKIH07Cg==
</data>
<flag name="commit-queue"
          id="479295"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452301</attachid>
            <date>2022-02-16 20:40:50 -0800</date>
            <delta_ts>2022-02-17 09:47:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236731-20220216204049.patch</filename>
            <type>text/plain</type>
            <size>43257</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU0ZDg4MTk3NjQ1N2MxNzY4
OWEzYmFlOWJhMjk5YzYzNDk5ODQ5ODAuLmU3NDFhZDY1YmI4OTZkZjZkNTU2NzAyZThjYTdiM2Fl
ZTNiMjY0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjItMDItMTYgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHNldHRpbmcgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgYnVmZmVycyBub24tdm9sYXRpbGUgaW4g
dGhlIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzY3MzEKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAg
ICAgIENhbGxzIHRvIHNldFZvbGF0aWxlKCkgYW5kIGlzSW5Vc2UoKSBvbiBJT1N1cmZhY2UgbmVl
ZCB0byBoYXBwZW4gaW4gdGhlIEdQVSBQcm9jZXNzLAorICAgICAgICBzbyB3aGVuIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlIHN3YXBzIGJ1ZmZlcnMgaW4gZGlzcGxheSgpLCBhbmQgbWFrZXMgdGhl
IGZyb250IGJ1ZmZlcgorICAgICAgICBub24tdm9sYXRpbGUsIHRob3NlIHRoaW5ncyBuZWVkIHRv
IGdvIHZpYSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kLgorICAgICAgICAKKyAgICAgICAgU28gcGx1
bWIgbWFya1N1cmZhY2VOb25Wb2xhdGlsZSgpIGFuZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkg
dGhyb3VnaCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24KKyAgICAgICAgYW5kIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQsIGJvdGggYXMgc3luYyBtZXNzYWdlcy4KKyAgICAgICAgCisg
ICAgICAgIEluIGJvdGggY2FzZXMsIGlmIHRoZSBzdXJmYWNlIHdhcyBwdXJnZWQgKGkuZS4gc2V0
Tm9uVm9sYXRpbGUgcmV0dXJuZWQgRW1wdHkpIHdlIG5lZWQKKyAgICAgICAgdG8gdHJpZ2dlciBh
IHNldE5lZWRzRGlzcGxheSgpLCB3aXJlZCB0aHJvdWdoIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZSgpCisgICAgICAgIHNvIHRoZXJlJ3Mgb25s
eSBvbmUgY2FsbCBzaXRlLgorCisgICAgICAgIFdlIGFsc28gbmVlZCB0byBhbHdheXMgc2VuZCB0
aGUgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGJhY2sgZnJvbSB0aGUgR1BVIFByb2Nlc3MgZm9y
CisgICAgICAgIHRoZSBmcm9udCBidWZmZXIsIHNpbmNlIGEgZnV0dXJlIHBhdGNoIHdpbGwgY2xl
YXIgdGhlc2Ugb3V0IGluIHRoZSB3ZWIgcHJvY2VzcyB3aGVuCisgICAgICAgIG1ha2luZyBidWZm
ZXJzIHZvbGF0aWxlLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlRnJvbUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Om1hcmtTdXJmYWNlTm9uVm9s
YXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzd2FwVG9W
YWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dhcHBlZEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcEJ1ZmZlcnMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFs
UmVwYWludCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNl
dEJ1ZmZlclZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnNldEJ1ZmZlck5vblZvbGF0aWxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OndpbGxNYWtlQnVmZmVyVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlkTWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRp
bGl0eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpidWZmZXJG
b3JUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmg6CisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlv
bjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVy
aW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xs
ZWN0aW9uOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmg6CisgICAgICAgIChX
ZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc6OnNldEJhY2tlbmRIYW5kbGUp
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nOjpjbGVh
ckJhY2tlbmRIYW5kbGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6cHV0UGl4ZWxCdWZmZXJGb3JJ
bWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJSZW1vdGVJT1N1
cmZhY2VCYWNrZW5kOjpzZXRCYWNrZW5kSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VC
dWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpjbGVhckJhY2tlbmRIYW5kbGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJm
YWNlQmFja2VuZC5oOgorCiAyMDIyLTAyLTE1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGRvd25jYXN0PD4gdG8gd29yayB3aXRoIEltYWdl
QnVmZmVyQmFja2VuZHMgdGhhdCBzdXBwb3J0IHNoYXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNw
cAppbmRleCAwOTA1YTRjNWZhZWRkOTdlNWIwMDQwNDRmOWQ4M2I3Zjk0NGRkZmE3Li5kZTk0ZmJi
NjViZmFmZDIxNTg0M2YwZTFjNzYyYzQ1MjgyY2YzZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJCdWZmZXJJZGVudGlmaWVyU2V0LmgiCiAjaW5jbHVkZSAiRmlsdGVyUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKQEAgLTM4NCw2ICszODUsNzIgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpy
ZWxlYXNlUmVtb3RlUmVzb3VyY2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWYKICAgICBt
X3JlbW90ZURpc3BsYXlMaXN0cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5k
bGVGcm9tQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiBidWZmZXIpCit7CisgICAgYXV0byog
YmFja2VuZCA9IGJ1ZmZlci5lbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgIGlmICghYmFja2Vu
ZCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8qIHNoYXJpbmcgPSBi
YWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7CisgICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2Vu
ZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8SW1hZ2VC
dWZmZXJCYWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLmNyZWF0ZUJhY2tlbmRIYW5kbGUo
KTsKKworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gYmFja2VuZEhhbmRsZSwgYm9vbCBidWZmZXJX
YXNFbXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFnZUJ1ZmZlcih7IGlkZW50aWZpZXIsIG1f
Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9KTsKKyAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBiYWNrZW5kSGFuZGxlID0g
aGFuZGxlRnJvbUJ1ZmZlcigqaW1hZ2VCdWZmZXIpOworICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9
IGltYWdlQnVmZmVyLT5zZXROb25Wb2xhdGlsZSgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoYmFja2VuZEhhbmRsZSksIHByZXZpb3VzU3RhdGUgPT0gVm9sYXRpbGl0eVN0YXRlOjpF
bXB0eSk7Cit9CisKKy8vIFRoaXMgaXMgdGhlIEdQVSBQcm9jZXNzIHZlcnNpb24gb2YgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKS4KK3ZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihjb25zdCBCdWZmZXJJZGVu
dGlmaWVyU2V0JiBidWZmZXJTZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQnVmZmVy
SWRlbnRpZmllclNldCYgc3dhcHBlZEJ1ZmZlclNldCwgc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGU+JiYgZnJvbnRCdWZmZXJIYW5kbGUsIGJvb2wgZnJvbnRCdWZmZXJXYXNF
bXB0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBmZXRjaEJ1ZmZlciA9IFsm
XShzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gaWRlbnRpZmllcikg
LT4gSW1hZ2VCdWZmZXIqIHsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIgPyBtX3JlbW90ZVJl
c291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoeyAqaWRlbnRpZmllciwgbV9ncHVDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0pIDogbnVsbHB0cjsKKyAg
ICB9OworCisgICAgYXV0byBmcm9udEJ1ZmZlciA9IGZldGNoQnVmZmVyKGJ1ZmZlclNldC5mcm9u
dCk7CisgICAgYXV0byBiYWNrQnVmZmVyID0gZmV0Y2hCdWZmZXIoYnVmZmVyU2V0LmJhY2spOwor
ICAgIGF1dG8gc2Vjb25kYXJ5QmFja0J1ZmZlciA9IGZldGNoQnVmZmVyKGJ1ZmZlclNldC5zZWNv
bmRhcnlCYWNrKTsKKworICAgIGlmICghYmFja0J1ZmZlciB8fCBiYWNrQnVmZmVyLT5pc0luVXNl
KCkpIHsKKyAgICAgICAgc3RkOjpzd2FwKGJhY2tCdWZmZXIsIHNlY29uZGFyeUJhY2tCdWZmZXIp
OworCisgICAgICAgIC8vIFdoZW4gcHVsbGluZyB0aGUgc2Vjb25kYXJ5IGJhY2sgYnVmZmVyIG91
dCBvZiBoaWJlcm5hdGlvbiAodG8gYmVjb21lCisgICAgICAgIC8vIHRoZSBuZXcgZnJvbnQgYnVm
ZmVyKSwgaWYgaXQgaXMgc29tZWhvdyBzdGlsbCBpbiB1c2UgKGUuZy4gd2UgZ290CisgICAgICAg
IC8vIHRocmVlIHN3YXBzIGFoZWFkIG9mIHRoZSByZW5kZXIgc2VydmVyKSwganVzdCBnaXZlIHVw
IGFuZCBkaXNjYXJkIGl0LgorICAgICAgICBpZiAoYmFja0J1ZmZlciAmJiBiYWNrQnVmZmVyLT5p
c0luVXNlKCkpCisgICAgICAgICAgICBiYWNrQnVmZmVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBzdGQ6OnN3YXAoZnJvbnRCdWZmZXIsIGJhY2tCdWZmZXIpOworCisgICAgc3RkOjpvcHRpb25h
bDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGZyb250QnVmZmVySGFuZGxlOworICAgIGJvb2wg
ZnJvbnRCdWZmZXJXYXNFbXB0eSA9IGZhbHNlOworICAgIGlmIChmcm9udEJ1ZmZlcikgeworICAg
ICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBmcm9udEJ1ZmZlci0+c2V0Tm9uVm9sYXRpbGUoKTsK
KyAgICAgICAgZnJvbnRCdWZmZXJXYXNFbXB0eSA9IHByZXZpb3VzU3RhdGUgPT0gVm9sYXRpbGl0
eVN0YXRlOjpFbXB0eTsKKyAgICAgICAgZnJvbnRCdWZmZXJIYW5kbGUgPSBoYW5kbGVGcm9tQnVm
ZmVyKCpmcm9udEJ1ZmZlcik7CisgICAgfQorCisgICAgYXV0byBidWZmZXJJZGVudGlmZXIgPSBb
XShJbWFnZUJ1ZmZlciogYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4geworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBidWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpOworICAgIH07CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcih7IGJ1ZmZlcklkZW50
aWZlcihmcm9udEJ1ZmZlciksIGJ1ZmZlcklkZW50aWZlcihiYWNrQnVmZmVyKSwgYnVmZmVySWRl
bnRpZmVyKHNlY29uZGFyeUJhY2tCdWZmZXIpIH0sIFdURk1vdmUoZnJvbnRCdWZmZXJIYW5kbGUp
LCBmcm9udEJ1ZmZlcldhc0VtcHR5KTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJpbmdVcGRh
dGVJRCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OkRpZEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKHJlbmRlcmluZ1VwZGF0ZUlEKSwgbV9yZW5kZXJp
bmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAppbmRleCBhYTY2MDRmMzgy
NDkwZjExYzcyMzk5OTcxMzc0ZDQzNDg5ZmJjZGJkLi4xMzE1YzBhY2IwZDg0YmU1NDRhMmYyNmQw
OWE0NTIxYWFiODBmZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKQEAgLTY3LDYgKzY3LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBj
bGFzcyBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOworc3RydWN0IEJ1ZmZlcklkZW50aWZpZXJT
ZXQ7CiBzdHJ1Y3QgUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVyczsKIAog
Y2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCA6IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgSVBDOjpTdHJlYW1NZXNzYWdlUmVjZWl2ZXIgewpAQCAtMTE4LDYgKzExOSw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KFJlbmRlcmluZ1VwZGF0ZUlEKTsKIAorICAgIHZvaWQgbWFya1N1cmZhY2VOb25Wb2xhdGlsZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+LCBib29sIGJ1ZmZlcldh
c0VtcHR5KT4mJik7CisgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKGNvbnN0IEJ1ZmZl
cklkZW50aWZpZXJTZXQmIGJ1ZmZlclNldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBC
dWZmZXJJZGVudGlmaWVyU2V0JiBzd2FwcGVkQnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPEltYWdl
QnVmZmVyQmFja2VuZEhhbmRsZT4mJiBmcm9udEJ1ZmZlckhhbmRsZSwgYm9vbCBmcm9udEJ1ZmZl
cldhc0VtcHR5KT4mJik7CisKICAgICAvLyBSZWNlaXZlZCBtZXNzYWdlcyB0cmFuc2xhdGVkIHRv
IHVzZSBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuCiAgICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQsIFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KaW5kZXggZmQ0MjA3MDAwNjc1NGQwNjIzMzgxMDM2Y2E0
ZjdhMjE4MTZlMTAwNC4uYWE3OWU2OGRjZGRkNzU1N2RkMGVmYTFjYTRiOTNhMjczZmVlM2RiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4KQEAgLTM2LDYgKzM2LDEw
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCBTdHJl
YW0gewogICAgIENhY2hlRm9udChJUEM6OkZvbnRSZWZlcmVuY2UgZm9udCkgTm90U3RyZWFtRW5j
b2RhYmxlCiAgICAgRGVsZXRlQWxsRm9udHMoKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQorCisgICAgTWFya1N1cmZhY2VOb25Wb2xhdGlsZShXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoc3RkOjpv
cHRpb25hbDxXZWJLaXQ6OkltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gYmFja2VuZEhhbmRsZSwg
Ym9vbCBidWZmZXJXYXNFbXB0eSkgU3luY2hyb25vdXMgTm90U3RyZWFtRW5jb2RhYmxlUmVwbHkK
KyAgICBTd2FwVG9WYWxpZEZyb250QnVmZmVyKHN0cnVjdCBXZWJLaXQ6OkJ1ZmZlcklkZW50aWZp
ZXJTZXQgYnVmZmVyU2V0KSAtPiAoc3RydWN0IFdlYktpdDo6QnVmZmVySWRlbnRpZmllclNldCBz
d2FwcGVkQnVmZmVyU2V0LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZSwgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5KSBTeW5j
aHJvbm91cyBOb3RTdHJlYW1FbmNvZGFibGVSZXBseQorCiAgICAgRmluYWxpemVSZW5kZXJpbmdV
cGRhdGUoV2ViS2l0OjpSZW5kZXJpbmdVcGRhdGVJRCByZW5kZXJpbmdVcGRhdGVJRCkKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCAzYmEzNDFjNjhmNmI0MzNlY2IxNWU2ZDAy
NTM4MjQ3ZWU5MTE4NmM4Li43MzExYjZjMmY1NTFiNzI4ZmE4ZmQ2OWQ0ZDhiNmQyZmFkYWYyYzI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoV1RG
OjpNYWNoU2VuZFJpZ2h0JiYgc3VyZmFjZUhhbmRsZSk7CisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoZSBiYWNraW5nIHN0b3JlIGNoYW5nZWQuCiAgICAgYm9vbCBkaXNwbGF5KCk7CiAKICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQpAQCAtODks
NiArOTAsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jb250ZW50c0J1ZmZlckhhbmRs
ZSB8fCAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CiAgICAgfQogCisgICAgLy8gSnVzdCBm
b3IgUmVtb3RlQmFja2luZ1N0b3JlQ29sbGVjdGlvbi4KKyAgICB2b2lkIGFwcGx5U3dhcHBlZEJ1
ZmZlcnMoUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+JiYgYmFjaywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIHNl
Y29uZGFyeUJhY2ssIGJvb2wgZnJvbnRCdWZmZXJOZWVkc0Rpc3BsYXkpOworICAgIHZvaWQgc3dh
cFRvVmFsaWRGcm9udEJ1ZmZlcigpOworCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gdGFrZVBlbmRpbmdGbHVzaGVycygp
OwogCiAgICAgZW51bSBjbGFzcyBCdWZmZXJUeXBlIHsKQEAgLTk3LDYgKzEwMiwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIFNlY29uZGFyeUJhY2sKICAgICB9OwogCisgICAgdm9pZCB3aWxsTWFrZUJ1
ZmZlclZvbGF0aWxlKEJ1ZmZlclR5cGUpOworICAgIHZvaWQgZGlkTWFrZUZyb250QnVmZmVyTm9u
Vm9sYXRpbGUoV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlKTsKKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShCdWZmZXJUeXBlKSBjb25zdDsKKwogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBpdCB3YXMgYWJsZSB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LiBUaGlz
IGNhbiBmYWlsIHdoZW4gdHJ5aW5nIHRvIG1hcmsgYW4gaW4tdXNlIHN1cmZhY2UgYXMgdm9sYXRp
bGUuCiAgICAgYm9vbCBzZXRCdWZmZXJWb2xhdGlsaXR5KEJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xh
dGlsZSk7CiAKQEAgLTEwOCwxNyArMTE4LDYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24qIGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24oKSBjb25zdDsKIAog
ICAgIHZvaWQgZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKLSAgICB2
b2lkIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKLQotICAgIGJvb2wgc3VwcG9ydHNQYXJ0aWFs
UmVwYWludCgpOwotCi0gICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwotCi0gICAg
V2ViQ29yZTo6RmxvYXRTaXplIG1fc2l6ZTsKLSAgICBmbG9hdCBtX3NjYWxlIHsgMS4wZiB9Owot
ICAgIGJvb2wgbV9pc09wYXF1ZSB7IGZhbHNlIH07Ci0KLSAgICBXZWJDb3JlOjpSZWdpb24gbV9k
aXJ0eVJlZ2lvbjsKIAogICAgIHN0cnVjdCBCdWZmZXIgewogICAgICAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwpAQCAtMTM1LDYgKzEzNCwyMSBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGRpc2NhcmQoKTsKICAgICB9OwogCisgICAgYm9vbCBzZXRCdWZmZXJW
b2xhdGlsZShCdWZmZXImKTsKKyAgICBXZWJDb3JlOjpWb2xhdGlsaXR5U3RhdGUgc2V0QnVmZmVy
Tm9uVm9sYXRpbGUoQnVmZmVyJik7CisKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCk7CisKKyAgICBi
b29sIHN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKSBjb25zdDsKKworICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZSogbV9sYXllcjsKKworICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX3NpemU7CisgICAg
ZmxvYXQgbV9zY2FsZSB7IDEuMGYgfTsKKyAgICBib29sIG1faXNPcGFxdWUgeyBmYWxzZSB9Owor
CisgICAgV2ViQ29yZTo6UmVnaW9uIG1fZGlydHlSZWdpb247CisKICAgICAvLyBVc2VkIGluIHRo
ZSBXZWJDb250ZW50IFByb2Nlc3MuCiAgICAgQnVmZmVyIG1fZnJvbnRCdWZmZXI7CiAgICAgQnVm
ZmVyIG1fYmFja0J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQppbmRleCBlZTY2
OGEyZjQxODUxMjgyMjg0NzRiODRlOTcwYWVhZmY2NDEzMmUzLi42MDNjNmM4ZmEyYmIyNzI0OTlh
MDYyMDUxOGFlNjg5NTlmYmI5OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJD
R0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kLmgiCi0jaW1wb3J0ICJNYWNoUG9ydC5oIgog
I2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVJlbW90
ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5oIgpAQCAtNDIsMTAgKzQxLDggQEAKICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ltYWdlQnVmZmVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXll
ci5oPgotI2ltcG9ydCA8bWFjaC9tYWNoX3BvcnQuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
UXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1R5cGVDYXN0c0NvY29hLmg+CiAK
QEAgLTIxNSw2ICsyMTIsOCBAQCB1bnNpZ25lZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0
ZXNQZXJQaXhlbCgpIGNvbnN0CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGlkRnJvbnRCdWZmZXIoKQogeworICAgIEFTU0VSVCghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2U6
OkRPTSkpOworCiAgICAgLy8gU29tZXRpbWVzLCB3ZSBjYW4gZ2V0IHR3byBzd2FwcyBhaGVhZCBv
ZiB0aGUgcmVuZGVyIHNlcnZlci4KICAgICAvLyBJZiB3ZSdyZSB1c2luZyBzaGFyZWQgSU9TdXJm
YWNlcywgd2UgbXVzdCB3YWl0IHRvIG1vZGlmeQogICAgIC8vIGEgc3VyZmFjZSB1bnRpbCBpdCBu
byBsb25nZXIgaGFzIG91dHN0YW5kaW5nIGNsaWVudHMuCkBAIC0yMzIsMTQgKzIzMSwzOCBAQCB2
b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKIAog
ICAgIG1fY29udGVudHNCdWZmZXJIYW5kbGUgPSBzdGQ6Om51bGxvcHQ7CiAgICAgc3RkOjpzd2Fw
KG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CisgICAgYXV0byByZXN1bHQgPSBzZXRCdWZm
ZXJOb25Wb2xhdGlsZShtX2Zyb250QnVmZmVyKTsKKyAgICBkaWRNYWtlRnJvbnRCdWZmZXJOb25W
b2xhdGlsZShyZXN1bHQpOworfQorCisvLyBDYWxsZWQgYWZ0ZXIgYnVmZmVyIHN3YXBwaW5nIGlu
IHRoZSBHUFUgcHJvY2Vzcy4KK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5U3dh
cHBlZEJ1ZmZlcnMoUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiYmIGZyb250LCBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYgYmFjaywgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiYmIHNlY29uZGFyeUJhY2ssIGJvb2wgZnJvbnRCdWZmZXJOZWVkc0Rpc3BsYXkpCit7CisgICAg
QVNTRVJUKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zv
cihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKTsKKworICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBXVEZNb3ZlKGZyb250KTsKKyAgICBtX2JhY2tCdWZmZXIuaW1hZ2VCdWZm
ZXIgPSBXVEZNb3ZlKGJhY2spOworICAgIG1fc2Vjb25kYXJ5QmFja0J1ZmZlci5pbWFnZUJ1ZmZl
ciA9IFdURk1vdmUoc2Vjb25kYXJ5QmFjayk7CisKKyAgICBtX2Zyb250QnVmZmVyLmlzVm9sYXRp
bGUgPSBmYWxzZTsKKworICAgIGlmIChmcm9udEJ1ZmZlck5lZWRzRGlzcGxheSkKKyAgICAgICAg
c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBCdWZmZXJzKCkKK3sKKyAgICBtX2NvbnRlbnRzQnVmZmVySGFuZGxlID0gc3RkOjpudWxsb3B0
OwogCi0gICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgc2V0QnVm
ZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFsc2UpOworICAgIGF1dG8qIGNvbGxl
Y3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9uKCk7CisgICAgaWYgKCFjb2xsZWN0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNr
aW5nU3RvcmVDb2xsZWN0aW9uKCkpCi0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBjb2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZSgqdGhpcyk7CisgICAg
Y29sbGVjdGlvbi0+c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigqdGhpcyk7CisgICAgaWYgKG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBjb2xsZWN0aW9uLT5hbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9y
ZSgqdGhpcyk7CiAKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAgICAgaWYgKG1faW5jbHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6
WWVzKQpAQCAtMjQ3LDcgKzI3MCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3
YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogI2VuZGlmCiB9CiAKLWJvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnN1cHBvcnRzUGFydGlhbFJlcGFpbnQoKQorYm9vbCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6c3VwcG9ydHNQYXJ0aWFsUmVwYWludCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IEZpbmQgYSB3YXkgdG8gc3VwcG9ydCBwYXJ0aWFsIHJlcGFpbnQgZm9yIGJhY2tpbmcgc3RvcmUg
dGhhdAogICAgIC8vIGluY2x1ZGVzIGEgZGlzcGxheSBsaXN0IHdpdGhvdXQgYWxsb3dpbmcgdW5i
b3VuZGVkIG1lbW9yeSBncm93dGguCkBAIC0yNjcsOSArMjkwLDEzIEBAIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAgbV9sYXN0RGlzcGxheVRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKIAotICAgIGJvb2wgbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlID0g
ZmFsc2U7Ci0gICAgaWYgKGF1dG8qIGNvbGxlY3Rpb24gPSBiYWNraW5nU3RvcmVDb2xsZWN0aW9u
KCkpCi0gICAgICAgIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbGxlY3Rpb24tPmJhY2tp
bmdTdG9yZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CisgICAgYXV0byogY29sbGVjdGlvbiA9IGJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24oKTsKKyAgICBpZiAoIWNvbGxlY3Rpb24pIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBib29sIG5lZWRUb0VuY29kZUJhY2tpbmdTdG9yZSA9IGNvbGxlY3Rpb24tPmJhY2tpbmdTdG9y
ZVdpbGxCZURpc3BsYXllZCgqdGhpcyk7CiAKICAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxh
dGZvcm1DQUxheWVyRGVsZWdhdGVzRGlzcGxheShtX2xheWVyKSkgewogICAgICAgICBtX2xheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpc3BsYXkobV9sYXllcik7CkBAIC0yNzgs
NyArMzA1LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAg
fQogCiAgICAgLy8gTWFrZSB0aGUgcHJldmlvdXMgZnJvbnQgYnVmZmVyIG5vbi12b2xhdGlsZSBl
YXJseSwgc28gdGhhdCB3ZSBjYW4gZGlydHkgdGhlIHdob2xlIGxheWVyIGlmIGl0IGNvbWVzIGJh
Y2sgZW1wdHkuCi0gICAgc2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlOjpGcm9udCwgZmFs
c2UpOworICAgIGNvbGxlY3Rpb24tPm1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKCp0aGlzKTsK
IAogICAgIGlmIChtX2RpcnR5UmVnaW9uLmlzRW1wdHkoKSB8fCBtX3NpemUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbmVlZFRvRW5jb2RlQmFja2luZ1N0b3JlOwpAQCAtMjkyLDExICszMTks
MTAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgIG1f
ZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAgfQogCi0gICAgc3dhcFRvVmFs
aWRGcm9udEJ1ZmZlcigpOworICAgIHN3YXBCdWZmZXJzKCk7CiAgICAgaWYgKCFtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotCiAgICAgaWYgKG1faW5j
bHVkZURpc3BsYXlMaXN0ID09IEluY2x1ZGVEaXNwbGF5TGlzdDo6WWVzKSB7CiAjaWYgRU5BQkxF
KENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgICAgICBhdXRvJiBkaXNw
bGF5TGlzdENvbnRleHQgPSBtX2Zyb250QnVmZmVyLmRpc3BsYXlMaXN0SW1hZ2VCdWZmZXItPmNv
bnRleHQoKTsKQEAgLTQ5Nyw2MiArNTIzLDEwMiBAQCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+PiBSZW1vdGVMYXllckJhY2tpbgog
ICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRCdWZmZXJGbHVzaGVycywgeyB9KTsKIH0K
IAotYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZm
ZXJUeXBlIGJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKK2Jvb2wgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxlKEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmICht
X3R5cGUgIT0gVHlwZTo6SU9TdXJmYWNlKQorICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyIHx8
IGJ1ZmZlci5pc1ZvbGF0aWxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIC8vIFJldHVy
biB2YWx1ZSBpcyB0cnVlIGlmIHdlIHN1Y2NlZWRlZCBpbiBtYWtpbmcgdm9sYXRpbGUuCi0gICAg
YXV0byBtYWtlVm9sYXRpbGUgPSBbXSAoQnVmZmVyJiBidWZmZXIpIC0+IGJvb2wgewotICAgICAg
ICBpZiAoIWJ1ZmZlci5pbWFnZUJ1ZmZlciB8fCBidWZmZXIuaXNWb2xhdGlsZSkKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGJ1ZmZlci5pbWFnZUJ1ZmZlci0+cmVsZWFzZUdyYXBoaWNz
Q29udGV4dCgpOworICAgIGlmIChidWZmZXIuaW1hZ2VCdWZmZXItPnNldFZvbGF0aWxlKCkpIHsK
KyAgICAgICAgYnVmZmVyLmlzVm9sYXRpbGUgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgICAgIGJ1ZmZlci5pbWFnZUJ1ZmZl
ci0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOworV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlIFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpzZXRCdWZmZXJOb25Wb2xhdGlsZShCdWZmZXImIGJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlOjpET00pKTsKIAotICAgICAg
ICBpZiAoYnVmZmVyLmltYWdlQnVmZmVyLT5zZXRWb2xhdGlsZSgpKSB7Ci0gICAgICAgICAgICBi
dWZmZXIuaXNWb2xhdGlsZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKKyAgICBpZiAoIWJ1ZmZl
ci5pbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZTo6
VmFsaWQ7IC8vIE5vdCByZWFsbHkgdmFsaWQgYnV0IHRoZSBjYWxsZXIgb25seSBjaGVja2VkIHRo
ZSBFbXB0eSBzdGF0ZS4KIAotICAgIC8vIFJldHVybiB2YWx1ZSBpcyB0cnVlIGlmIHdlIG5lZWQg
dG8gcmVwYWludC4KLSAgICBhdXRvIG1ha2VOb25Wb2xhdGlsZSA9IFtdIChCdWZmZXImIGJ1ZmZl
cikgLT4gYm9vbCB7Ci0gICAgICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyIHx8ICFidWZmZXIu
aXNWb2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWJ1ZmZlci5p
c1ZvbGF0aWxlKQorICAgICAgICByZXR1cm4gV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlOjpWYWxp
ZDsKIAotICAgICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBidWZmZXIuaW1hZ2VCdWZmZXItPnNl
dE5vblZvbGF0aWxlKCk7Ci0gICAgICAgIGJ1ZmZlci5pc1ZvbGF0aWxlID0gZmFsc2U7CisgICAg
YnVmZmVyLmlzVm9sYXRpbGUgPSBmYWxzZTsKKyAgICByZXR1cm4gYnVmZmVyLmltYWdlQnVmZmVy
LT5zZXROb25Wb2xhdGlsZSgpOworfQogCi0gICAgICAgIHJldHVybiBwcmV2aW91c1N0YXRlID09
IFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZTo6RW1wdHk7Ci0gICAgfTsKK3ZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OndpbGxNYWtlQnVmZmVyVm9sYXRpbGUoQnVmZmVyVHlwZSBidWZmZXJU
eXBlKQoreworICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1v
dGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZTo6RE9NKSk7CisKKyAgICBh
dXRvIGJ1ZmZlciA9IGJ1ZmZlckZvclR5cGUoYnVmZmVyVHlwZSk7CisgICAgaWYgKCFidWZmZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGJhY2tlbmQgPSBidWZmZXItPmVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCk7CisgICAgaWYgKCFiYWNrZW5kKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBDbGVhcmluZyB0aGUgYmFja2VuZCBoYW5kbGUgaW4gdGhlIHdlYmNvbnRlbnQgcHJvY2Vz
cyBpcyBuZWNlc3NhcnkgdG8gaGF2ZSB0aGUgc3VyZmFjZSBpbi11c2UgY291bnQgZHJvcCB0byB6
ZXJvLgorICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tlbmRTaGFyaW5nKCk7Cisg
ICAgaWYgKGlzPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmc+KHNoYXJpbmcpKQorICAg
ICAgICBkb3duY2FzdDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPigqc2hhcmluZyku
Y2xlYXJCYWNrZW5kSGFuZGxlKCk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRpZE1ha2VGcm9udEJ1ZmZlck5vblZvbGF0aWxlKFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZSBy
ZXN1bHQpCit7CisgICAgbV9mcm9udEJ1ZmZlci5pc1ZvbGF0aWxlID0gZmFsc2U7CisgICAgaWYg
KHJlc3VsdCA9PSBXZWJDb3JlOjpWb2xhdGlsaXR5U3RhdGU6OkVtcHR5KQorICAgICAgICBzZXRO
ZWVkc0Rpc3BsYXkoKTsKK30KKworYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVm
ZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIGJ1ZmZlclR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKK3sK
KyAgICBpZiAobV90eXBlICE9IFR5cGU6OklPU3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKLSAgICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250
OgorICAgIGNhc2UgQnVmZmVyVHlwZTo6RnJvbnQ6IHsKICAgICAgICAgaWYgKGlzVm9sYXRpbGUp
Ci0gICAgICAgICAgICByZXR1cm4gbWFrZVZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOworICAgICAg
ICAgICAgcmV0dXJuIHNldEJ1ZmZlclZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOwogICAgICAgICAK
ICAgICAgICAgLy8gQmVjb21pbmcgbm9uLXZvbGF0aWxlIGFuZCB0aGUgZnJvbnQgYnVmZmVyIHdh
cyBwdXJnZWQsIHNvIHdlIG5lZWQgdG8gcmVwYWludC4KLSAgICAgICAgaWYgKG1ha2VOb25Wb2xh
dGlsZShtX2Zyb250QnVmZmVyKSkKLSAgICAgICAgICAgIHNldE5lZWRzRGlzcGxheSgpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHNldEJ1ZmZlck5vblZvbGF0aWxlKG1fZnJvbnRCdWZmZXIpOwor
ICAgICAgICBkaWRNYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShyZXN1bHQpOwogICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgY2FzZSBCdWZmZXJUeXBlOjpCYWNrOgogICAgICAgICBpZiAoaXNW
b2xhdGlsZSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsK
KyAgICAgICAgICAgIHJldHVybiBzZXRCdWZmZXJWb2xhdGlsZShtX2JhY2tCdWZmZXIpOwogICAg
IAotICAgICAgICBtYWtlTm9uVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKKyAgICAgICAgc2V0QnVm
ZmVyTm9uVm9sYXRpbGUobV9iYWNrQnVmZmVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBC
dWZmZXJUeXBlOjpTZWNvbmRhcnlCYWNrOgogICAgICAgICBpZiAoaXNWb2xhdGlsZSkKLSAgICAg
ICAgICAgIHJldHVybiBtYWtlVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBzZXRCdWZmZXJWb2xhdGlsZShtX3NlY29uZGFyeUJhY2tCdWZmZXIpOwog
ICAgIAotICAgICAgICBtYWtlTm9uVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKKyAg
ICAgICAgc2V0QnVmZmVyTm9uVm9sYXRpbGUobV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpidWZmZXJGb3JUeXBlKEJ1ZmZl
clR5cGUgYnVmZmVyVHlwZSkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGJ1ZmZlclR5cGUpIHsKKyAg
ICBjYXNlIEJ1ZmZlclR5cGU6OkZyb250OgorICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlcjsKKyAgICBjYXNlIEJ1ZmZlclR5cGU6OkJhY2s6CisgICAgICAgIHJldHVybiBt
X2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXI7CisgICAgY2FzZSBCdWZmZXJUeXBlOjpTZWNvbmRhcnlC
YWNrOgorICAgICAgICByZXR1cm4gbV9zZWNvbmRhcnlCYWNrQnVmZmVyLmltYWdlQnVmZmVyOwor
ICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkKIHsKICAgICBpc1ZvbGF0aWxlID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKaW5kZXggNTdmOWU1YTIy
NDMzN2ZiZTM2ZGVhYTQ2ZDUwNzc1NWFjYTFhMmM5NC4uMGFmYWU0Mzk5MWE5ZTk1ZTAyZTgyMGQz
ZTQ3MDNlZDIzYWNlMmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNv
bGxlY3Rpb24uaApAQCAtNTIsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHZhbHVl
IGluZGljYXRlcyB3aGV0aGVyIHRoZSBiYWNraW5nIHN0b3JlIG5lZWRzIHRvIGJlIGluY2x1ZGVk
IGluIHRoZSB0cmFuc2FjdGlvbi4KICAgICBib29sIGJhY2tpbmdTdG9yZVdpbGxCZURpc3BsYXll
ZChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYpOwogICAgIHZvaWQgYmFja2luZ1N0b3JlQmVjYW1l
VW5yZWFjaGFibGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmKTsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgbWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcihSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZSYpOwogCiAgICAgdm9pZCB3aWxsRmx1c2hMYXllcnMoKTsKICAgICB2b2lkIHdp
bGxDb21taXRMYXllclRyZWUoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tCmluZGV4IDg5MmNhMTQ5ODlm
YzJiNTA4MzAxM2Y2Y2JhODA1MGEzNzA4Mzk3MjQuLmU1ZTE4YTY0OTcxYWU2M2FjOWUyMDBlY2Zh
ODFkYjhjNDY1MDQ2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5tbQpAQCAtMTA0LDYgKzEwNCwxNiBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlQ29sbGVjdGlvbjo6YmFja2luZ1N0b3JlV2lsbEJlRGlzcGxheWVkKFJlbW90ZUxheWVyQgog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVj
dGlvbjo6bWFrZUZyb250QnVmZmVyTm9uVm9sYXRpbGUoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUm
IGJhY2tpbmdTdG9yZSkKK3sKKyAgICBiYWNraW5nU3RvcmUuc2V0QnVmZmVyVm9sYXRpbGl0eShS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKK30KKwor
dm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb246OnN3YXBUb1ZhbGlkRnJvbnRC
dWZmZXIoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmIGJhY2tpbmdTdG9yZSkKK3sKKyAgICBiYWNr
aW5nU3RvcmUuc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOworfQorCiBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbjo6bWFya0JhY2tpbmdTdG9yZVZvbGF0aWxlKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUsIE9wdGlvblNldDxWb2xhdGlsaXR5TWFya2lu
Z0JlaGF2aW9yPiBtYXJraW5nQmVoYXZpb3IsIE1vbm90b25pY1RpbWUgbm93KQogewogICAgIEFT
U0VSVCghbV9pbkxheWVyRmx1c2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgKaW5kZXgg
NjEwMDU2ODM2YzM0ZmRlNzY5MDRiNGU3ZWQ3YjViMjcwNDU1M2ExOC4uMjkyOWY5NzE2Mjk5N2E3
MjhjOGJmMDNmY2EwN2ZjZDdlOGU5ZjkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
CkBAIC00Miw2ICs0Miw5IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBhbGxvY2F0ZUJ1ZmZlckZvckJhY2tpbmdTdG9yZShjb25zdCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSYpIGZpbmFsOwogICAgIAogICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisKKyAgICB2b2lkIG1ha2VGcm9udEJ1ZmZl
ck5vblZvbGF0aWxlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CisgICAgdm9pZCBz
d2FwVG9WYWxpZEZyb250QnVmZmVyKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJikgZmluYWw7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0K
aW5kZXggYjcxODM5Mzc1OTgxMWEzNjk3OWRiMjg5OGIzNTYxZWI1N2EzODA2Yy4uNDUwNmYxOTJi
NWVmNmMyYTQzYTMxODZlMjYxNzExZjg2OTc1NDllMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0Jh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0JhY2tpbmdTdG9yZUNvbGxl
Y3Rpb24ubW0KQEAgLTQxLDYgKzQxLDMwIEBAIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
UmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlvCiAgICAg
cmV0dXJuIGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKTsKIH0KIAordm9pZCBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5nU3Rv
cmVDb2xsZWN0aW9uOjptYWtlRnJvbnRCdWZmZXJOb25Wb2xhdGlsZShSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSYgYmFja2luZ1N0b3JlKQoreworICAgIGF1dG8mIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQgPSBsYXllclRyZWVDb250ZXh0KCkuZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCk7CisgICAgYXV0byBmcm9udEJ1ZmZlciA9IGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpGcm9udCk7CisgICAgaWYgKCFmcm9u
dEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXN1bHQgPSByZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1hcmtTdXJmYWNlTm9uVm9sYXRpbGUoZnJvbnRCdWZmZXItPnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKTsKKyAgICBiYWNraW5nU3RvcmUuZGlkTWFrZUZyb250QnVm
ZmVyTm9uVm9sYXRpbGUocmVzdWx0KTsKK30KKwordm9pZCBSZW1vdGVMYXllcldpdGhSZW1vdGVS
ZW5kZXJpbmdCYWNraW5nU3RvcmVDb2xsZWN0aW9uOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCit7CisgICAgYXV0byYgcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCA9IGxheWVyVHJlZUNvbnRleHQoKS5lbnN1cmVSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkoKTsKKworICAgIGF1dG8gaWRlbnRpZmllcnMgPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHk6OkJ1ZmZlclNldCB7CisgICAgICAgIGJhY2tpbmdTdG9yZS5idWZmZXJG
b3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXJUeXBlOjpGcm9udCksCisgICAg
ICAgIGJhY2tpbmdTdG9yZS5idWZmZXJGb3JUeXBlKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpC
dWZmZXJUeXBlOjpCYWNrKSwKKyAgICAgICAgYmFja2luZ1N0b3JlLmJ1ZmZlckZvclR5cGUoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlclR5cGU6OlNlY29uZGFyeUJhY2spCisgICAgfTsK
KyAgICBhdXRvIHN3YXBSZXN1bHQgPSByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLnN3YXBUb1ZhbGlk
RnJvbnRCdWZmZXIoV1RGTW92ZShpZGVudGlmaWVycykpOworICAgIGJhY2tpbmdTdG9yZS5hcHBs
eVN3YXBwZWRCdWZmZXJzKFdURk1vdmUoc3dhcFJlc3VsdC5idWZmZXJzLmZyb250KSwgV1RGTW92
ZShzd2FwUmVzdWx0LmJ1ZmZlcnMuYmFjayksIFdURk1vdmUoc3dhcFJlc3VsdC5idWZmZXJzLnNl
Y29uZGFyeUJhY2spLCBzd2FwUmVzdWx0LmZyb250QnVmZmVyV2FzRW1wdHkpOworfQorCiBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IFJlbW90ZUxheWVyV2l0aFJlbW90ZVJlbmRlcmluZ0Jh
Y2tpbmdTdG9yZUNvbGxlY3Rpb246OmFsbG9jYXRlQnVmZmVyRm9yQmFja2luZ1N0b3JlKGNvbnN0
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCiB7CiAgICAgYXV0byByZW5k
ZXJpbmdNb2RlID0gYmFja2luZ1N0b3JlLnR5cGUoKSA9PSBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6VHlwZTo6SU9TdXJmYWNlID8gV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQg
OiBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjI1MDY0NjUwMzQxODBl
MjMzNmJkOWE5ZmE3ZjgyYzQ2MTFmYjVhMC4uZDc0ZTk5MmI3NGY2ZTEyZTIzYTEwMzhjMDFjMjg3
OTFhY2M1OWMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0yNjAzLDYgKzI2MDMsNyBAQAogCQkwRjgwMjY0NzI3QUI0QUVGMDBFQzZF
RDcgLyogUmVtb3RlTGF5ZXJXaXRoUmVtb3RlUmVuZGVyaW5nQmFja2luZ1N0b3JlQ29sbGVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllcldpdGhSZW1vdGVSZW5kZXJpbmdCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODUwRkU0
MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTUxRUQ3QzM5RjAw
RkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4NjM2MUIyN0JEQzJCNjAwNkU2RDUyIC8qIEJ1ZmZlcklk
ZW50aWZpZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVySWRlbnRpZmllclNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcxMTkwMERCQjhENCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8q
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc4NCw2ICs5Nzg1LDcg
QEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTcyN0E3RjMzMjQwNzg1MjcwMDREMjkzMSAvKiBjb2Nv
YSAqLywKIAkJCQkxQ0I3NDYxOTI3NDM2REUzMDBGMTk4NzQgLyogV2ViR1BVICovLAorCQkJCTBG
ODYzNjFCMjdCREMyQjYwMDZFNkQ1MiAvKiBCdWZmZXJJZGVudGlmaWVyU2V0LmggKi8sCiAJCQkJ
N0I2NEMwQjYyNTRDNUMyNTAwMDZCNEFGIC8qIEdyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllci5o
ICovLAogCQkJCTcyN0E3RjM5MjQwNzg4RjEwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGUuaCAqLywKIAkJCQkwRkE3NDY3RTI3QkI2MTE4MDBCNUZGNUEgLyogSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZy5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9CdWZmZXJJZGVudGlmaWVyU2V0LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0J1ZmZlcklkZW50aWZpZXJTZXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41NTJmMTI0OGNlOWUxYTc5OTNmZjFiMDE4MzUyOTcwZWM0OTM0Yzk4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9CdWZmZXJJZGVudGlm
aWVyU2V0LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBCdWZmZXJJ
ZGVudGlmaWVyU2V0IHsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcj4gZnJvbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXI+IGJhY2s7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHNlY29uZGFyeUJhY2s7CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QnVmZmVySWRlbnRpZmllclNl
dD4gZGVjb2RlKERlY29kZXImKTsKK307CisKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3Zv
aWQgQnVmZmVySWRlbnRpZmllclNldDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBmcm9udDsKKyAgICBlbmNvZGVyIDw8IGJhY2s7CisgICAgZW5jb2Rl
ciA8PCBzZWNvbmRhcnlCYWNrOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpv
cHRpb25hbDxCdWZmZXJJZGVudGlmaWVyU2V0PiBCdWZmZXJJZGVudGlmaWVyU2V0OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gZnJvbnRJZGVudGlmaWVyOworICAg
IGRlY29kZXIgPj4gZnJvbnRJZGVudGlmaWVyOworICAgIGlmICghZnJvbnRJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+IGJhY2tJZGVudGlm
aWVyOworICAgIGRlY29kZXIgPj4gYmFja0lkZW50aWZpZXI7CisgICAgaWYgKCFiYWNrSWRlbnRp
ZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBzZWNv
bmRhcnlCYWNrSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHNlY29uZGFyeUJhY2tJZGVudGlm
aWVyOworICAgIGlmICghc2Vjb25kYXJ5QmFja0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQnVmZmVySWRlbnRpZmllclNldCB7ICpmcm9udElk
ZW50aWZpZXIsICpiYWNrSWRlbnRpZmllciwgKnNlY29uZGFyeUJhY2tJZGVudGlmaWVyIH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaAppbmRleCA0MDI4
ZDJkNzc4YWQ4YzRkZmYyMzkzYmM2MTA4NjQ1NjExZGM2Njk3Li5mNTdhZjE5MjQzNDVhNTY2M2Fm
NTcwZjQ0MzNmMmVlYjY3OGRlYzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZVNoYXJpbmcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhh
bmRsZVNoYXJpbmcuaApAQCAtMzYsNiArMzYsOSBAQCBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmRI
YW5kbGVTaGFyaW5nIDogcHVibGljIFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZFNoYXJpbgog
cHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIGNyZWF0ZUJhY2tl
bmRIYW5kbGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZEhhbmRs
ZShJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
QmFja2VuZEhhbmRsZSgpIHsgfQorCiBwcml2YXRlOgogICAgIGJvb2wgaXNJbWFnZUJ1ZmZlckJh
Y2tlbmRIYW5kbGVTaGFyaW5nKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBjNDUzYjVlODFjYzhh
ZjdlYjY0YjgwYTc3Mjg0N2EyODhlMzA3OGM1Li42YjhiNzhiNmU5Y2YzZDg0ZGI5MmM0YWYwY2E1
ZDg0Y2ViNzM4YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJCdWZmZXJJZGVudGlmaWVyU2V0LmgiCiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVJlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaCIKQEAgLTE0NSw3ICsxNDYsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaQogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFdlYkNvcmU6OlBpeGVsQnVmZmVy
Rm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCwgU3Bhbjx1aW50OF90PiByZXN1bHQpCitib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Z2V0UGl4ZWxCdWZmZXJGb3JJbWFnZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgaW1hZ2VCdWZmZXIsIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBkZXN0aW5hdGlvbkZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgU3Bhbjx1aW50OF90PiByZXN1bHQpCiB7CiAgICAg
aWYgKGF1dG8gaGFuZGxlID0gdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIocmVz
dWx0LnNpemUoKSkpIHsKICAgICAgICAgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaXBjSGFuZGxl
IHsgV1RGTW92ZSgqaGFuZGxlKSwgbV9nZXRQaXhlbEJ1ZmZlclNoYXJlZE1lbW9yeS0+c2l6ZSgp
IH07CkBAIC0xNjQsNyArMTY1LDcgQEAgYm9vbCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmdldFBpeGVsQnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW4KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnB1dFBpeGVs
QnVmZmVyRm9ySW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVyLCBjb25zdCBXZWJDb3JlOjpQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZXN0UG9pbnQsIFdlYkNvcmU6OkFscGhhUHJlbXVsdGlwbGljYXRpb24gZGVzdEZvcm1hdCkKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpwdXRQaXhlbEJ1ZmZlckZvckltYWdlQnVm
ZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlciwgY29uc3QgUGl4ZWxC
dWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2lu
dCYgZGVzdFBvaW50LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpCiB7CiAgICAg
c2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpQdXRQaXhlbEJ1
ZmZlckZvckltYWdlQnVmZmVyKGltYWdlQnVmZmVyLCBwaXhlbEJ1ZmZlciwgc3JjUmVjdCwgZGVz
dFBvaW50LCBkZXN0Rm9ybWF0KSk7CiB9CkBAIC0yNjQsNiArMjY1LDc0IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmCiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSk7CiB9CiAKK2F1dG8gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKGNvbnN0IEJ1ZmZlclNldCYgYnVmZmVycykgLT4gU3dhcEJ1ZmZlcnNSZXN1bHQK
K3sKKyAgICBhdXRvIGJ1ZmZlcklkZW50aWZpZXIgPSBbXShJbWFnZUJ1ZmZlciogYnVmZmVyKSAt
PiBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4geworICAgICAgICBp
ZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBidWZmZXItPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgIH07CisKKyAg
ICBhdXRvIGJ1ZmZlclNldCA9IEJ1ZmZlcklkZW50aWZpZXJTZXQgeworICAgICAgICBidWZmZXJJ
ZGVudGlmaWVyKGJ1ZmZlcnMuZnJvbnQuZ2V0KCkpLAorICAgICAgICBidWZmZXJJZGVudGlmaWVy
KGJ1ZmZlcnMuYmFjay5nZXQoKSksCisgICAgICAgIGJ1ZmZlcklkZW50aWZpZXIoYnVmZmVycy5z
ZWNvbmRhcnlCYWNrLmdldCgpKQorICAgIH07CisgICAgCisgICAgQnVmZmVySWRlbnRpZmllclNl
dCBzd2FwcGVkQnVmZmVyU2V0OworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5k
SGFuZGxlPiBmcm9udEJ1ZmZlckhhbmRsZTsKKyAgICBib29sIGZyb250QnVmZmVyV2FzRW1wdHkg
PSBmYWxzZTsKKyAgICAKKyAgICBzZW5kU3luY1RvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpTd2FwVG9WYWxpZEZyb250QnVmZmVyKGJ1ZmZlclNldCksCisgICAgICAg
IE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpTd2FwVG9WYWxpZEZyb250QnVmZmVy
OjpSZXBseShzd2FwcGVkQnVmZmVyU2V0LCBmcm9udEJ1ZmZlckhhbmRsZSwgZnJvbnRCdWZmZXJX
YXNFbXB0eSkpOworCisgICAgYXV0byBmZXRjaEJ1ZmZlcldpdGhJZGVudGlmaWVyID0gWyZdKHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBpZGVudGlmaWVyLCBzdGQ6
Om9wdGlvbmFsPEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4mJiBoYW5kbGUgPSBzdGQ6Om51bGxv
cHQpIC0+IFJlZlB0cjxJbWFnZUJ1ZmZlcj4geworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBhdXRvKiBidWZmZXIgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNoZWRJbWFnZUJ1ZmZlcigqaWRlbnRpZmllcik7Cisg
ICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAg
ICAgICAKKyAgICAgICAgaWYgKGhhbmRsZSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIGJhY2tl
bmQgPSBidWZmZXItPmVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKKyAgICAgICAgICAgICAgICBh
dXRvKiBzaGFyaW5nID0gYmFja2VuZC0+dG9CYWNrZW5kU2hhcmluZygpOworICAgICAgICAgICAg
ICAgIGlmIChpczxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGVTaGFyaW5nPihzaGFyaW5nKSkKKyAg
ICAgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlU2hhcmlu
Zz4oKnNoYXJpbmcpLnNldEJhY2tlbmRIYW5kbGUoV1RGTW92ZSgqaGFuZGxlKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYnVmZmVyOworICAgIH07CisKKyAg
ICByZXR1cm4geworICAgICAgICB7CisgICAgICAgICAgICBmZXRjaEJ1ZmZlcldpdGhJZGVudGlm
aWVyKHN3YXBwZWRCdWZmZXJTZXQuZnJvbnQsIFdURk1vdmUoZnJvbnRCdWZmZXJIYW5kbGUpKSwK
KyAgICAgICAgICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZpZXIoc3dhcHBlZEJ1ZmZlclNldC5i
YWNrKSwKKyAgICAgICAgICAgIGZldGNoQnVmZmVyV2l0aElkZW50aWZpZXIoc3dhcHBlZEJ1ZmZl
clNldC5zZWNvbmRhcnlCYWNrKQorICAgICAgICB9LAorICAgICAgICBmcm9udEJ1ZmZlcldhc0Vt
cHR5CisgICAgfTsKK30KKworVm9sYXRpbGl0eVN0YXRlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6bWFya1N1cmZhY2VOb25Wb2xhdGlsZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBib29sIGJ1ZmZlcldhc0VtcHR5OworICAgIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBiYWNrZW5kSGFuZGxlOworICAgIHNlbmRTeW5j
VG9TdHJlYW0oTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6Ok1hcmtTdXJmYWNlTm9u
Vm9sYXRpbGUoaWRlbnRpZmllciksIE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpN
YXJrU3VyZmFjZU5vblZvbGF0aWxlOjpSZXBseShiYWNrZW5kSGFuZGxlLCBidWZmZXJXYXNFbXB0
eSkpOworCisgICAgYXV0byBidWZmZXIgPSBtX3JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jYWNo
ZWRJbWFnZUJ1ZmZlcihpZGVudGlmaWVyKTsKKyAgICBpZiAoYmFja2VuZEhhbmRsZSAmJiBidWZm
ZXIpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBidWZmZXItPmVuc3VyZUJhY2tlbmRD
cmVhdGVkKCkpIHsKKyAgICAgICAgICAgIGF1dG8qIHNoYXJpbmcgPSBiYWNrZW5kLT50b0JhY2tl
bmRTaGFyaW5nKCk7CisgICAgICAgICAgICBpZiAoaXM8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
U2hhcmluZz4oc2hhcmluZykpCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8SW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlU2hhcmluZz4oKnNoYXJpbmcpLnNldEJhY2tlbmRIYW5kbGUoV1RGTW92ZSgq
YmFja2VuZEhhbmRsZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZmZlcldh
c0VtcHR5ID8gVm9sYXRpbGl0eVN0YXRlOjpFbXB0eSA6IFZvbGF0aWxpdHlTdGF0ZTo6VmFsaWQ7
Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpmaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZSgpCiB7CiAgICAgc2VuZFRvU3RyZWFtKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShtX3JlbmRlcmluZ1VwZGF0ZUlEKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAppbmRleCBiYTI0YzdhZTMwMzgwYTBi
YWZiYTYxM2JkMzNiOGQ4Y2MwZTAyYThlLi5iMGYxYThjZjQ2NThiMzc0ZGE5MWIyZTRiMTczMjRm
ZWQ2OTFmYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTk0
LDYgKzk0LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFsbEZvbnRzKCk7CiAgICAgdm9p
ZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKIAorICAgIFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZSBtYXJrU3VyZmFjZU5vblZvbGF0
aWxlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisKKyAgICBzdHJ1Y3Qg
QnVmZmVyU2V0IHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBmcm9udDsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBiYWNrOworICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IHNlY29uZGFyeUJhY2s7CisgICAgfTsKKyAgICAKKyAg
ICBzdHJ1Y3QgU3dhcEJ1ZmZlcnNSZXN1bHQgeworICAgICAgICBCdWZmZXJTZXQgYnVmZmVyczsK
KyAgICAgICAgYm9vbCBmcm9udEJ1ZmZlcldhc0VtcHR5IHsgZmFsc2UgfTsKKyAgICB9OworICAg
IFN3YXBCdWZmZXJzUmVzdWx0IHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoY29uc3QgQnVmZmVyU2V0
Jik7CisKICAgICB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgUmVuZGVyaW5n
VXBkYXRlSUQgcmVuZGVyaW5nVXBkYXRlSUQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Vw
ZGF0ZUlEOyB9CiAgICAgdW5zaWduZWQgZGVsYXllZFJlbmRlcmluZ1VwZGF0ZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJpbmdVcGRhdGVJRCAtIG1fZGlkUmVuZGVyaW5nVXBkYXRlSUQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VC
YWNrZW5kLmNwcAppbmRleCBkZjdjN2YyNDk4MjM1MzhhZDYzNTI1NDljYzZlMThkOTA0NmJhMzI0
Li44M2ExNjI1YjY5ZmZiYmFkYzFiMDZjOGYzNjg5NjRlYzcwYTFlNDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyUmVt
b3RlSU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuY3BwCkBA
IC02OSw2ICs2OSwxNiBAQCBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGVCYWNrZW5kSGFuZGxlKAogICAgIHJldHVybiBzdGQ6
OmdldDxNYWNoU2VuZFJpZ2h0PihtX2hhbmRsZSkuY29weVNlbmRSaWdodCgpOwogfQogCit2b2lk
IEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6c2V0QmFja2VuZEhhbmRsZShJbWFn
ZUJ1ZmZlckJhY2tlbmRIYW5kbGUmJiBoYW5kbGUpCit7CisgICAgbV9oYW5kbGUgPSBXVEZNb3Zl
KGhhbmRsZSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kOjpj
bGVhckJhY2tlbmRIYW5kbGUoKQoreworICAgIG1faGFuZGxlID0geyB9OworfQorCiBHcmFwaGlj
c0NvbnRleHQmIEltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNv
bnN0CiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1v
dGVJT1N1cmZhY2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyUmVtb3RlSU9TdXJmYWNlQmFja2VuZC5oCmluZGV4IGI1YjY3
MmFiNDdiYzNhNDk3OTc5M2Y5MzdjOGMzYjMyMjlhN2JkNjUuLmRmYjBmZTlkYWM1MTA5M2EzNGU4
MTUxYjc4NmZkYzhmY2VlYzQ5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJSZW1vdGVJT1N1cmZhY2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclJlbW90ZUlPU3VyZmFjZUJhY2tlbmQuaApAQCAtNzEsOSArNzEsMTEgQEAgcHJpdmF0ZToK
ICAgICBib29sIG9yaWdpbkF0Qm90dG9tTGVmdENvcm5lcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGlzT3JpZ2luQXRCb3R0b21MZWZ0Q29ybmVyOyB9CiAKICAgICB1bnNpZ25lZCBieXRlc1BlclJv
dygpIGNvbnN0IGZpbmFsOwotICAgIAorCiAgICAgLy8gSW1hZ2VCdWZmZXJCYWNrZW5kU2hhcmlu
ZwogICAgIEltYWdlQnVmZmVyQmFja2VuZFNoYXJpbmcqIHRvQmFja2VuZFNoYXJpbmcoKSBmaW5h
bCB7IHJldHVybiB0aGlzOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kSGFuZGxlKEltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSYmKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyQmFja2VuZEhhbmRsZSgpIGZp
bmFsOwogCiAgICAgSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlIG1faGFuZGxlOwogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>