<?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>194561</bug_id>
          
          <creation_ts>2019-02-12 15:56:57 -0800</creation_ts>
          <short_desc>Modernize IPC code</short_desc>
          <delta_ts>2019-02-13 10:45:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505457</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-12 15:56:57 -0800</bug_when>
    <thetext>Modernize IPC code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505459</commentid>
    <comment_count>1</comment_count>
      <attachid>361859</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-12 15:59:03 -0800</bug_when>
    <thetext>Created attachment 361859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505575</commentid>
    <comment_count>2</comment_count>
      <attachid>361859</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2019-02-12 18:43:44 -0800</bug_when>
    <thetext>Comment on attachment 361859
Patch

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

r=me

&gt; Source/WebKit/ChangeLog:3
&gt; +        Modernize IPC code

I would call this &quot;Remove legacy sync messaging in some IPC code&quot;. &quot;Modern&quot; is a bit vague, and not everything modern is an improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505762</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-02-13 10:35:31 -0800</bug_when>
    <thetext>http://trac.webkit.org/r241441</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505766</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-13 10:45:05 -0800</bug_when>
    <thetext>&lt;rdar://problem/48043574&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361859</attachid>
            <date>2019-02-12 15:59:03 -0800</date>
            <delta_ts>2019-02-12 18:43:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194561-20190212155902.patch</filename>
            <type>text/plain</type>
            <size>38167</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDEzMjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE5LTAyLTEyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIElQ
QyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTQ1NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2luZyBzb21lIExlZ2FjeVN5bmMgbWVzc2FnZXMgdG8gRGVsYXllZCBtZXNzYWdlcy4gIFdl
IHNob3VsZCBwcm9iYWJseSByZW5hbWUgRGVsYXllZCB0byBTeW5jLgorICAgICAgICBUaGVyZSBh
cmUgdG9vIG1hbnkgd2F5cyB0byBzZW5kIG1lc3NhZ2VzLiAgTGV0J3Mgd29yayB0byBnZXQgcmlk
IG9mIHRoZSBvbGQgb25lLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NM
Q2VydGlmaWNhdGVGb3JXZWJTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
aGFuZGxlTW91c2VFbnRlckV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZUVkaXRpbmdDb21tYW5kKToKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojppc0VkaXRpbmdDb21tYW5kRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aGFuZGxlc1BhZ2VTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cmVxdWlyZXNV
bmlmaWVkU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJv
eHk6OnBhaW50RW50aXJlUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxl
clByb3h5OjpzdXBwb3J0c1NuYXBzaG90dGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OmdldFBsdWdpblNjcmlwdGFibGVOUE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2V0Rm9ybVZhbHVlKToKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9QbHVn
aW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXI6OmRlYWxsb2NhdGUpOgorICAgICAgICAoV2ViS2l0OjpOUE9iamVj
dE1lc3NhZ2VSZWNlaXZlcjo6aGFzTWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI6Omludm9rZSk6CisgICAgICAgIChXZWJLaXQ6Ok5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyOjppbnZva2VEZWZhdWx0KToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI6Omhhc1Byb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI6OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI6OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RNZXNz
YWdlUmVjZWl2ZXI6OnJlbW92ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI6OmVudW1lcmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05QT2Jq
ZWN0TWVzc2FnZVJlY2VpdmVyLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXIubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL21hYy9TZWNJ
dGVtU2hpbVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VjSXRlbVNoaW1Qcm94eTo6c2Vj
SXRlbVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbjoK
KwogMjAxOS0wMi0xMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBGaW5kIG9uIFBhZ2Ugc2hvdWxkbid0IHpvb20gaW4gb24gbWF0Y2hlcwpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJl
dmlzaW9uIDI0MTMxNykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzc0LDkgKzE3NzQsMTAgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Z2V0TmV0d29ya1Byb2Nlc3NTdAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpEaWRHZXRTdGF0aXN0aWNzKGRh
dGEsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dz
QW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sIGFsbG93
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYWxs
b3dzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNh
bXBsZSkKQEAgLTE4NDksMTAgKzE4NTAsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWN0dWFs
UHJlcGFyZVRvU3VzcAogICAgICAgICBjb25uZWN0aW9uLT5jbGVhbnVwRm9yU3VzcGVuc2lvbihb
ZGVsYXllZFRhc2tDb3VudGVyXSB7IH0pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9j
ZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KGJvb2wmIGhhbmRsZWQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYWN0dWFsUHJlcGFyZVRvU3VzcGVu
ZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDo6Tm8pOwotICAgIGhhbmRsZWQg
PSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDI0MTMxNykKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY2FuSGFuZGxlSFRUUFNTZXJ2ZXJU
cnVzdEV2YWx1YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1
c3RFdmFsdWF0aW9uOyB9CiAKLSAgICB2b2lkIHByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHko
Ym9vbCYgaGFuZGxlZCk7CisgICAgdm9pZCBwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcHJlcGFyZVRvU3VzcGVu
ZCgpOwogICAgIHZvaWQgY2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpOwogICAgIHZvaWQgcHJvY2Vz
c0RpZFJlc3VtZSgpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRD
YW5IYW5kbGVIVFRQU1NlcnZlclRydXN0RXZhbHVhdGlvbihib29sKTsKICAgICB2b2lkIGdldE5l
dHdvcmtQcm9jZXNzU3RhdGlzdGljcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGNs
ZWFyQ2FjaGVGb3JBbGxPcmlnaW5zKHVpbnQzMl90IGNhY2hlc1RvQ2xlYXIpOwotICAgIHZvaWQg
c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCk7CisgICAgdm9pZCBz
ZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIAogICAgIHZvaWQgc3luY0FsbENvb2tpZXMoKTsKICAgICB2
b2lkIGRpZFN5bmNBbGxDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0
MTMxNykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIFNldFFPUyhpbnQgbGF0ZW5jeVFPUywgaW50
IHRocm91Z2hwdXRRT1MpCiAgICAgU2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogI2VuZGlmCi0gICAgU2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQo
Ym9vbCBlbmFibGVkKSAtPiAoKSBMZWdhY3lTeW5jCisgICAgU2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBlbmFibGVkKSAtPiAoKSBEZWxheWVkCiAKICAgICBTeW5j
QWxsQ29va2llcygpCiAKQEAgLTc1LDcgKzc1LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZQogICAgIFByb2Nlc3NEaWRUcmFuc2l0aW9uVG9CYWNrZ3JvdW5kKCkK
ICAgICBQcm9jZXNzRGlkVHJhbnNpdGlvblRvRm9yZWdyb3VuZCgpCiAKLSAgICBQcm9jZXNzV2ls
bFN1c3BlbmRJbW1pbmVudGx5KCkgLT4gKGJvb2wgaGFuZGxlZCkgTGVnYWN5U3luYworICAgIFBy
b2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHkoKSAtPiAoYm9vbCBoYW5kbGVkKSBEZWxheWVkCiAg
ICAgUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAgQ2FuY2VsUHJlcGFyZVRvU3VzcGVuZCgpCiAgICAg
UHJvY2Vzc0RpZFJlc3VtZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1
Z2luQ29udHJvbGxlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAkocmV2aXNpb24gMjQxMzE3KQorKysg
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyOSw2OCArNTI5LDcxIEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5OjpoYW5kbGVNb3VzZUUKICAgICBtX3BsdWdpbi0+aGFuZGxlTW91c2VFdmVudChtb3VzZUV2
ZW50KTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCYgaGFuZGxlZCkKK3ZvaWQgUGx1
Z2luQ29udHJvbGxlclByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaGFuZGxlZCA9IG1fcGx1Z2luLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fcGx1Z2luLT5oYW5kbGVXaGVlbEV2ZW50
KHdoZWVsRXZlbnQpKTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZU1v
dXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBtb3VzZUVudGVyRXZlbnQsIGJvb2wm
IGhhbmRsZWQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aGFuZGxlTW91c2VFbnRlckV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRW50ZXJFdmVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBoYW5kbGVkID0gbV9w
bHVnaW4tPmhhbmRsZU1vdXNlRW50ZXJFdmVudChtb3VzZUVudGVyRXZlbnQpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fcGx1Z2luLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQobW91c2VFbnRlckV2
ZW50KSk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpoYW5kbGVNb3VzZUxlYXZl
RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2VMZWF2ZUV2ZW50LCBib29sJiBoYW5kbGVk
KQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25z
dCBXZWJNb3VzZUV2ZW50JiBtb3VzZUxlYXZlRXZlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlZCA9IG1fcGx1Z2luLT5o
YW5kbGVNb3VzZUxlYXZlRXZlbnQobW91c2VMZWF2ZUV2ZW50KTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihtX3BsdWdpbi0+aGFuZGxlTW91c2VMZWF2ZUV2ZW50KG1vdXNlTGVhdmVFdmVudCkpOwog
fQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25z
dCBXZWJLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2ZW50LCBib29sJiBoYW5kbGVkKQordm9pZCBQ
bHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYga2V5Ym9hcmRFdmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBoYW5kbGVkID0gbV9wbHVnaW4tPmhhbmRsZUtleWJv
YXJkRXZlbnQoa2V5Ym9hcmRFdmVudCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9wbHVnaW4t
PmhhbmRsZUtleWJvYXJkRXZlbnQoa2V5Ym9hcmRFdmVudCkpOwogfQogCi12b2lkIFBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6aGFuZGxlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgYm9vbCYgaGFuZGxlZCkKK3ZvaWQgUGx1Z2lu
Q29udHJvbGxlclByb3h5OjpoYW5kbGVFZGl0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGhhbmRsZWQgPSBtX3BsdWdpbi0+aGFu
ZGxlRWRpdGluZ0NvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihtX3BsdWdpbi0+aGFuZGxlRWRpdGluZ0NvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3Vt
ZW50KSk7CiB9CiAgICAgCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6aXNFZGl0aW5nQ29t
bWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgYm9vbCYgZW5hYmxlZCkKK3Zv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojppc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIGVuYWJsZWQgPSBtX3BsdWdpbi0+aXNFZGl0aW5nQ29tbWFu
ZEVuYWJsZWQoY29tbWFuZE5hbWUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fcGx1Z2luLT5p
c0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb21tYW5kTmFtZSkpOwogfQogICAgIAotdm9pZCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoYm9vbCYgaXNIYW5kbGVk
KQordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
c0hhbmRsZWQgPSBtX3BsdWdpbi0+aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1fcGx1Z2luLT5oYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCi12
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cmVxdWlyZXNVbmlmaWVkU2NhbGVGYWN0b3IoYm9v
bCYgcmVxdWlyZWQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cmVxdWlyZXNVbmlmaWVk
U2NhbGVGYWN0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICByZXF1aXJlZCA9IG1fcGx1Z2luLT5yZXF1aXJlc1VuaWZpZWRTY2FsZUZh
Y3RvcigpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fcGx1Z2luLT5yZXF1aXJlc1VuaWZpZWRT
Y2FsZUZhY3RvcigpKTsKIH0KIAotdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnBhaW50RW50
aXJlUGx1Z2luKCkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpwYWludEVudGlyZVBsdWdp
bihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKG1fcGx1Z2luU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICBtX2RpcnR5UmVjdCA9IEludFJlY3QoSW50
UG9pbnQoKSwgbV9wbHVnaW5TaXplKTsKICAgICBwYWludCgpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKLXZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdXBwb3J0c1NuYXBzaG90
dGluZyhib29sJiBpc1N1cHBvcnRlZCkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdXBw
b3J0c1NuYXBzaG90dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGlzU3VwcG9ydGVkID0gbV9wbHVnaW4tPnN1cHBvcnRzU25hcHNo
b3R0aW5nKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9wbHVnaW4tPnN1cHBvcnRzU25hcHNo
b3R0aW5nKCkpOwogfQogCi12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6c25hcHNob3QoU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGJhY2tpbmdTdG9yZUhhbmRsZSkKK3ZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpzbmFwc2hvdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiYpPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9wbHVn
aW4pOwogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJpdG1hcCA9IG1fcGx1Z2luLT5zbmFw
c2hvdCgpOwogICAgIGlmICghYml0bWFwKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCisgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
YmFja2luZ1N0b3JlSGFuZGxlOwogICAgIGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGJhY2tpbmdTdG9y
ZUhhbmRsZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShiYWNraW5nU3RvcmVIYW5k
bGUpKTsKIH0KIAogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnNldEZvY3VzKGJvb2wgaGFz
Rm9jdXMpCkBAIC02MDQsMTYgKzYwNywxNSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
ZGlkVXBkYXRlKCkKICAgICBzdGFydFBhaW50VGltZXIoKTsKIH0KIAotdm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6OmdldFBsdWdpblNjcmlwdGFibGVOUE9iamVjdCh1aW50NjRfdCYgcGx1Z2lu
U2NyaXB0YWJsZU5QT2JqZWN0SUQpCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2V0UGx1
Z2luU2NyaXB0YWJsZU5QT2JqZWN0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlTlBP
YmplY3QgPSBtX3BsdWdpbi0+cGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KCk7Ci0gICAgaWYgKCFw
bHVnaW5TY3JpcHRhYmxlTlBPYmplY3QpIHsKLSAgICAgICAgcGx1Z2luU2NyaXB0YWJsZU5QT2Jq
ZWN0SUQgPSAwOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghcGx1Z2luU2NyaXB0
YWJsZU5QT2JqZWN0KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7CiAgICAg
Ci0gICAgcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0SUQgPSBtX2Nvbm5lY3Rpb24tPm5wUmVtb3Rl
T2JqZWN0TWFwKCktPnJlZ2lzdGVyTlBPYmplY3QocGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCBt
X3BsdWdpbi5nZXQoKSk7CisgICAgdWludDY0X3QgcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0SUQg
PSBtX2Nvbm5lY3Rpb24tPm5wUmVtb3RlT2JqZWN0TWFwKCktPnJlZ2lzdGVyTlBPYmplY3QocGx1
Z2luU2NyaXB0YWJsZU5QT2JqZWN0LCBtX3BsdWdpbi5nZXQoKSk7CiAgICAgcmVsZWFzZU5QT2Jq
ZWN0KHBsdWdpblNjcmlwdGFibGVOUE9iamVjdCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocGx1
Z2luU2NyaXB0YWJsZU5QT2JqZWN0SUQpOwogfQogCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNTdG9yYWdlQmxvY2tpbmdFbmFi
bGVkKQpAQCAtNjQwLDkgKzY0MiwxMSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bXV0
ZWRTdGF0ZUNoCiAgICAgbV9wbHVnaW4tPm11dGVkU3RhdGVDaGFuZ2VkKGlzTXV0ZWQpOwogfQog
Ci12b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6Z2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVyblZh
bHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSkKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZXRG
b3JtVmFsdWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBTdHJpbmcmJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuVmFsdWUgPSBtX3BsdWdpbi0+Z2V0Rm9ybVZhbHVl
KGZvcm1WYWx1ZSk7CisgICAgU3RyaW5nIGZvcm1WYWx1ZTsKKyAgICBib29sIHJldHVyblZhbHVl
ID0gbV9wbHVnaW4tPmdldEZvcm1WYWx1ZShmb3JtVmFsdWUpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKGZvcm1WYWx1ZSkpOwogfQogCiAjaWYgUExBVEZPUk0o
WDExKQpJbmRleDogU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaAkocmV2aXNpb24gMjQxMzE3KQorKysgU291cmNlL1dlYktpdC9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUs
MjAgKzEzNSwyMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmluaXNoTG9h
ZGluZygpOwogICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCk7
CiAgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKLSAgICB2
b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wmIGhhbmRsZWQp
OwotICAgIHZvaWQgaGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmLCBi
b29sJiBoYW5kbGVkKTsKLSAgICB2b2lkIGhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJN
b3VzZUV2ZW50JiwgYm9vbCYgaGFuZGxlZCk7Ci0gICAgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmLCBib29sJiBoYW5kbGVkKTsKLSAgICB2b2lkIGhhbmRs
ZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wmKTsKLSAg
ICB2b2lkIGlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYsIGJvb2wmKTsKLSAg
ICB2b2lkIGhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoYm9vbCYpOwotICAgIHZvaWQgcmVxdWlyZXNV
bmlmaWVkU2NhbGVGYWN0b3IoYm9vbCYpOwotICAgIHZvaWQgcGFpbnRFbnRpcmVQbHVnaW4oKTsK
LSAgICB2b2lkIHN1cHBvcnRzU25hcHNob3R0aW5nKGJvb2wmKTsKLSAgICB2b2lkIHNuYXBzaG90
KFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBiYWNraW5nU3RvcmVIYW5kbGUpOworICAgIHZvaWQg
aGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIGhhbmRsZWQpPiYmKTsKKyAgICB2b2lkIGhhbmRsZU1vdXNlRW50ZXJFdmVudChj
b25zdCBXZWJNb3VzZUV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhbmRsZWQp
PiYmKTsKKyAgICB2b2lkIGhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhbmRsZWQpPiYmKTsKKyAgICB2b2lkIGhh
bmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBoYW5kbGVkKT4mJik7CisgICAgdm9pZCBoYW5kbGVFZGl0aW5nQ29tbWFu
ZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgaGFuZGxlZCk+JiYpOworICAgIHZvaWQgaXNFZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBoYW5k
bGVzUGFnZVNjYWxlRmFjdG9yKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAg
IHZvaWQgcmVxdWlyZXNVbmlmaWVkU2NhbGVGYWN0b3IoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CisgICAgdm9pZCBwYWludEVudGlyZVBsdWdpbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgc3VwcG9ydHNTbmFwc2hvdHRpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzbmFwc2hvdChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiYpPik7CiAgICAgdm9pZCBzZXRGb2N1cyhib29s
KTsKICAgICB2b2lkIGRpZFVwZGF0ZSgpOwotICAgIHZvaWQgZ2V0UGx1Z2luU2NyaXB0YWJsZU5Q
T2JqZWN0KHVpbnQ2NF90JiBwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3RJRCk7CisgICAgdm9pZCBn
ZXRQbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCBwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3RJRCk+JiYpOwogCiAgICAgdm9pZCB3aW5kb3dGb2N1
c0NoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCB3aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChib29sKTsK
QEAgLTE2NSw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3Rh
dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wpOwogICAgIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCk7Ci0gICAgdm9pZCBnZXRGb3Jt
VmFsdWUoYm9vbCYgcmV0dXJuVmFsdWUsIFN0cmluZyYgZm9ybVZhbHVlKTsKKyAgICB2b2lkIGdl
dEZvcm1WYWx1ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgcmV0dXJuVmFsdWUsIFN0cmlu
ZyYmIGZvcm1WYWx1ZSk+JiYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoY29uc3Qg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBwbGF0Zm9ybURlc3Ryb3koKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjQxMzE3KQorKysgU291
cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNjksMjggKzY5LDI4IEBAIG1lc3NhZ2VzIC0+IFBsdWdpbkNv
bnRyb2xsZXJQcm94eSBMZWdhY3kKICAgICBIYW5kbGVNb3VzZUV2ZW50KFdlYktpdDo6V2ViTW91
c2VFdmVudCBtb3VzZUV2ZW50KQogICAgIAogICAgICMgU2VudCB3aGVuIGEgbW91c2Ugd2hlZWwg
ZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICBIYW5kbGVXaGVlbEV2ZW50KFdlYktpdDo6
V2ViV2hlZWxFdmVudCB3aGVlbEV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBMZWdhY3lTeW5jCisg
ICAgSGFuZGxlV2hlZWxFdmVudChXZWJLaXQ6OldlYldoZWVsRXZlbnQgd2hlZWxFdmVudCkgLT4g
KGJvb2wgaGFuZGxlZCkgRGVsYXllZAogCiAgICAgIyBTZW50IHdoZW4gYSBtb3VzZSBlbnRlciBl
dmVudCBzaG91bGQgYmUgcHJvY2Vzc2VkLgotICAgIEhhbmRsZU1vdXNlRW50ZXJFdmVudChXZWJL
aXQ6OldlYk1vdXNlRXZlbnQgbW91c2VFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgTGVnYWN5U3lu
YworICAgIEhhbmRsZU1vdXNlRW50ZXJFdmVudChXZWJLaXQ6OldlYk1vdXNlRXZlbnQgbW91c2VF
dmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgRGVsYXllZAogICAgIAogICAgICMgU2VudCB3aGVuIGEg
bW91c2UgbGVhdmUgZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICBIYW5kbGVNb3VzZUxl
YXZlRXZlbnQoV2ViS2l0OjpXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQpIC0+IChib29sIGhhbmRs
ZWQpIExlZ2FjeVN5bmMKKyAgICBIYW5kbGVNb3VzZUxlYXZlRXZlbnQoV2ViS2l0OjpXZWJNb3Vz
ZUV2ZW50IG1vdXNlRXZlbnQpIC0+IChib29sIGhhbmRsZWQpIERlbGF5ZWQKIAogICAgICMgU2Vu
dCB3aGVuIGEga2V5Ym9hcmQgc2hvdWxkIGJlIHByb2Nlc3NlZC4KLSAgICBIYW5kbGVLZXlib2Fy
ZEV2ZW50KFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50KSAtPiAoYm9vbCBo
YW5kbGVkKSBMZWdhY3lTeW5jCisgICAgSGFuZGxlS2V5Ym9hcmRFdmVudChXZWJLaXQ6OldlYktl
eWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgRGVsYXllZAogICAg
IAogICAgICMgU2VudCB3aGVuIGFuIGVkaXRpbmcgY29tbWFuZCBzaG91bGQgYmUgcHJvY2Vzc2Vk
LgotICAgIEhhbmRsZUVkaXRpbmdDb21tYW5kKFN0cmluZyBjb21tYW5kTmFtZSwgU3RyaW5nIGFy
Z3VtZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBMZWdhY3lTeW5jCisgICAgSGFuZGxlRWRpdGluZ0Nv
bW1hbmQoU3RyaW5nIGNvbW1hbmROYW1lLCBTdHJpbmcgYXJndW1lbnQpIC0+IChib29sIGhhbmRs
ZWQpIERlbGF5ZWQKICAgICAKICAgICAjIFJldHVybiB3aGV0aGVyIG9yIG5vdCBhIHBsdWdpbiB3
YW50cyB0byBlbmFibGUgdGhlIGdpdmVuIGVkaXRpbmcgY29tbWFuZC4KLSAgICBJc0VkaXRpbmdD
b21tYW5kRW5hYmxlZChTdHJpbmcgY29tbWFuZE5hbWUpIC0+IChib29sIGVuYWJsZWQpIExlZ2Fj
eVN5bmMKKyAgICBJc0VkaXRpbmdDb21tYW5kRW5hYmxlZChTdHJpbmcgY29tbWFuZE5hbWUpIC0+
IChib29sIGVuYWJsZWQpIERlbGF5ZWQKICAgICAKICAgICAjIFJldHVybiB3aGV0aGVyIG9yIG5v
dCBhIHBsdWdpbiB3YW50cyB0byBoYW5kbGUgcGFnZSBzY2FsZSBmYWN0b3IgaXRzZWxmLgotICAg
IEhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSAtPiAoYm9vbCBlbmFibGVkKSBMZWdhY3lTeW5jCisg
ICAgSGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIC0+IChib29sIGVuYWJsZWQpIERlbGF5ZWQKIAog
ICAgICMgUmV0dXJuIHdoZXRoZXIgb3Igbm90IGEgcGx1Z2luIHdhbnRzIHBhZ2Ugc2NhbGUsIHBh
Z2Ugem9vbSwgYW5kIHRleHQgem9vbSBhbGwgdG8gYWZmZWN0IHBhZ2Ugc2NhbGUuCi0gICAgUmVx
dWlyZXNVbmlmaWVkU2NhbGVGYWN0b3IoKSAtPiAoYm9vbCByZXF1aXJlZCkgTGVnYWN5U3luYwor
ICAgIFJlcXVpcmVzVW5pZmllZFNjYWxlRmFjdG9yKCkgLT4gKGJvb2wgcmVxdWlyZWQpIERlbGF5
ZWQKIAogICAgICMgU2VudCB3aGVuIHRoZSBwbHVnLWluIGZvY3VzIGNoYW5nZXMuCiAgICAgU2V0
Rm9jdXMoYm9vbCBpc0ZvY3VzZWQpCkBAIC05OSwxMCArOTksMTAgQEAgbWVzc2FnZXMgLT4gUGx1
Z2luQ29udHJvbGxlclByb3h5IExlZ2FjeQogICAgIERpZFVwZGF0ZSgpCiAKICAgICAjIFBhaW50
IHRoZSBlbnRpcmUgcGx1Zy1pbi4KLSAgICBQYWludEVudGlyZVBsdWdpbigpIC0+ICgpIExlZ2Fj
eVN5bmMKKyAgICBQYWludEVudGlyZVBsdWdpbigpIC0+ICgpIERlbGF5ZWQKIAogICAgICMgR2V0
IGEgcmVmZXJlbmNlIHRvIHRoZSBwbHVnLWluJ3Mgc2NyaXB0YWJsZSBOUE9iamVjdC4KLSAgICBH
ZXRQbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QoKSAtPiAodWludDY0X3QgcGx1Z2luU2NyaXB0YWJs
ZU5QT2JqZWN0SUQpIExlZ2FjeVN5bmMKKyAgICBHZXRQbHVnaW5TY3JpcHRhYmxlTlBPYmplY3Qo
KSAtPiAodWludDY0X3QgcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0SUQpIERlbGF5ZWQKIAogICAg
ICMgU2VudCB3aGVuIHRoZSBjb250YWluaW5nIE5TV2luZG93J3MgZm9jdXMgY2hhbmdlcwogICAg
IFdpbmRvd0ZvY3VzQ2hhbmdlZChib29sIGhhc0ZvY3VzKQpAQCAtMTIyLDEwICsxMjIsMTAgQEAg
bWVzc2FnZXMgLT4gUGx1Z2luQ29udHJvbGxlclByb3h5IExlZ2FjeQogI2VuZGlmCiAKICAgICAj
IERvZXMgdGhlIHBsdWdpbiBzdXBwb3J0IHNuYXBzaG90dGluZz8KLSAgICBTdXBwb3J0c1NuYXBz
aG90dGluZygpIC0+IChib29sIGlzU3VwcG9ydGVkKSBMZWdhY3lTeW5jCisgICAgU3VwcG9ydHNT
bmFwc2hvdHRpbmcoKSAtPiAoYm9vbCBpc1N1cHBvcnRlZCkgRGVsYXllZAogCiAgICAgIyBSZXR1
cm4gYSBzbmFwc2hvdCBvZiB0aGUgcGx1Z2luLgotICAgIFNuYXBzaG90KCkgLT4gKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYmFja2luZ1N0b3JlSGFuZGxlKSBMZWdhY3lTeW5jCisg
ICAgU25hcHNob3QoKSAtPiAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBiYWNraW5n
U3RvcmVIYW5kbGUpIERlbGF5ZWQKIAogICAgICMgU2VudCB3aGVuIHN0b3JhZ2UgYmxvY2tpbmcg
cG9saWN5IGNoYW5nZXMKICAgICBTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCBzdG9y
YWdlQmxvY2tpbmdFbmFibGVkKQpAQCAtMTM0LDcgKzEzNCw3IEBAIG1lc3NhZ2VzIC0+IFBsdWdp
bkNvbnRyb2xsZXJQcm94eSBMZWdhY3kKICAgICBQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAKICAgICAjIEdldHMgdGhlIHN0cmluZyBy
ZXByZXNlbnRhdGluZyB0aGUgZm9ybSB2YWx1ZSBvZiB0aGUgcGx1Zy1pbgotICAgIEdldEZvcm1W
YWx1ZSgpIC0+IChib29sIHJldHVyblZhbHVlLCBTdHJpbmcgZm9ybVZhbHVlKSBMZWdhY3lTeW5j
CisgICAgR2V0Rm9ybVZhbHVlKCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFN0cmluZyBmb3JtVmFs
dWUpIERlbGF5ZWQKIAogICAgICMgU2VudCB3aGVuIHRoZSBicm93c2VyIHdhbnRzIHRvIG11dGUg
b3IgdW5tdXRlIHRoZSBwbHVnaW4uCiAgICAgTXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCBtdXRlZCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXIuY3BwCShyZXZpc2lvbiAyNDEzMTcpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsMjcgKzUzLDI0IEBAIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjp+TlBPYmplY3RN
ZXNzYWcKICAgICByZWxlYXNlTlBPYmplY3QobV9ucE9iamVjdCk7CiB9CiAKLXZvaWQgTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXI6OmRlYWxsb2NhdGUoKQordm9pZCBOUE9iamVjdE1lc3NhZ2VSZWNl
aXZlcjo6ZGVhbGxvY2F0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgZGVsZXRlIHRoaXM7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotdm9pZCBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6aGFzTWV0aG9kKGNvbnN0IE5QSWRlbnRp
ZmllckRhdGEmIG1ldGhvZE5hbWVEYXRhLCBib29sJiByZXR1cm5WYWx1ZSkKK3ZvaWQgTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXI6Omhhc01ldGhvZChjb25zdCBOUElkZW50aWZpZXJEYXRhJiBtZXRo
b2ROYW1lRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBpZiAobV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQoKSB8fCAhbV9ucE9i
amVjdC0+X2NsYXNzLT5oYXNNZXRob2QpIHsKLSAgICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICByZXR1cm5WYWx1ZSA9IG1fbnBPYmpl
Y3QtPl9jbGFzcy0+aGFzTWV0aG9kKG1fbnBPYmplY3QsIG1ldGhvZE5hbWVEYXRhLmNyZWF0ZU5Q
SWRlbnRpZmllcigpKTsKKyAgICBpZiAobV9wbHVnaW4tPmlzQmVpbmdEZXN0cm95ZWQoKSB8fCAh
bV9ucE9iamVjdC0+X2NsYXNzLT5oYXNNZXRob2QpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihmYWxzZSk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtX25wT2JqZWN0LT5fY2xh
c3MtPmhhc01ldGhvZChtX25wT2JqZWN0LCBtZXRob2ROYW1lRGF0YS5jcmVhdGVOUElkZW50aWZp
ZXIoKSkpOwogfQogCi12b2lkIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjppbnZva2UoY29uc3Qg
TlBJZGVudGlmaWVyRGF0YSYgbWV0aG9kTmFtZURhdGEsIGNvbnN0IFZlY3RvcjxOUFZhcmlhbnRE
YXRhPiYgYXJndW1lbnRzRGF0YSwgYm9vbCYgcmV0dXJuVmFsdWUsIE5QVmFyaWFudERhdGEmIHJl
c3VsdERhdGEpCit2b2lkIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjppbnZva2UoY29uc3QgTlBJ
ZGVudGlmaWVyRGF0YSYgbWV0aG9kTmFtZURhdGEsIGNvbnN0IFZlY3RvcjxOUFZhcmlhbnREYXRh
PiYgYXJndW1lbnRzRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBOUFZhcmlhbnRE
YXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3BsdWdpbi0+aXNCZWlu
Z0Rlc3Ryb3llZCgpIHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZSkgewotICAgICAgICBy
ZXR1cm5WYWx1ZSA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChtX3Bs
dWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpIHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZSkK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCB7IH0pOwogCiAgICAgVmVj
dG9yPE5QVmFyaWFudD4gYXJndW1lbnRzOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJn
dW1lbnRzRGF0YS5zaXplKCk7ICsraSkKQEAgLTg0LDcgKzgxLDggQEAgdm9pZCBOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlcjo6aW52b2tlKGNvbgogCiAgICAgUGx1Z2luQ29udHJvbGxlcjo6UGx1Z2lu
RGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGx1Z2luLT5jb250cm9sbGVyKCkpOwog
Ci0gICAgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZShtX25wT2JqZWN0
LCBtZXRob2ROYW1lRGF0YS5jcmVhdGVOUElkZW50aWZpZXIoKSwgYXJndW1lbnRzLmRhdGEoKSwg
YXJndW1lbnRzLnNpemUoKSwgJnJlc3VsdCk7CisgICAgTlBWYXJpYW50RGF0YSByZXN1bHREYXRh
OworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZShtX25w
T2JqZWN0LCBtZXRob2ROYW1lRGF0YS5jcmVhdGVOUElkZW50aWZpZXIoKSwgYXJndW1lbnRzLmRh
dGEoKSwgYXJndW1lbnRzLnNpemUoKSwgJnJlc3VsdCk7CiAgICAgaWYgKHJldHVyblZhbHVlKSB7
CiAgICAgICAgIC8vIENvbnZlcnQgdGhlIE5QVmFyaWFudCB0byBhbiBOUFZhcmlhbnREYXRhLgog
ICAgICAgICByZXN1bHREYXRhID0gbV9ucFJlbW90ZU9iamVjdE1hcC0+bnBWYXJpYW50VG9OUFZh
cmlhbnREYXRhKHJlc3VsdCwgbV9wbHVnaW4pOwpAQCAtOTYsMTQgKzk0LDEzIEBAIHZvaWQgTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXI6Omludm9rZShjb24KICAgICAKICAgICAvLyBBbmQgcmVsZWFz
ZSB0aGUgcmVzdWx0LgogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShyZXN1bHREYXRhKSk7CiB9CiAK
LXZvaWQgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Omludm9rZURlZmF1bHQoY29uc3QgVmVjdG9y
PE5QVmFyaWFudERhdGE+JiBhcmd1bWVudHNEYXRhLCBib29sJiByZXR1cm5WYWx1ZSwgTlBWYXJp
YW50RGF0YSYgcmVzdWx0RGF0YSkKK3ZvaWQgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6Omludm9r
ZURlZmF1bHQoY29uc3QgVmVjdG9yPE5QVmFyaWFudERhdGE+JiBhcmd1bWVudHNEYXRhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE5QVmFyaWFudERhdGEmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCkgfHwgIW1fbnBP
YmplY3QtPl9jbGFzcy0+aW52b2tlRGVmYXVsdCkgewotICAgICAgICByZXR1cm5WYWx1ZSA9IGZh
bHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChtX3BsdWdpbi0+aXNCZWluZ0Rl
c3Ryb3llZCgpIHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgeyB9KTsKIAogICAgIFZlY3RvcjxOUFZh
cmlhbnQ+IGFyZ3VtZW50czsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50c0Rh
dGEuc2l6ZSgpOyArK2kpCkBAIC0xMTQsNyArMTExLDggQEAgdm9pZCBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlcjo6aW52b2tlRGVmYQogCiAgICAgUGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1
Y3Rpb25Qcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGx1Z2luLT5jb250cm9sbGVyKCkpOwogCi0gICAg
cmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1bHQobV9ucE9iamVj
dCwgYXJndW1lbnRzLmRhdGEoKSwgYXJndW1lbnRzLnNpemUoKSwgJnJlc3VsdCk7CisgICAgTlBW
YXJpYW50RGF0YSByZXN1bHREYXRhOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0
LT5fY2xhc3MtPmludm9rZURlZmF1bHQobV9ucE9iamVjdCwgYXJndW1lbnRzLmRhdGEoKSwgYXJn
dW1lbnRzLnNpemUoKSwgJnJlc3VsdCk7CiAgICAgaWYgKHJldHVyblZhbHVlKSB7CiAgICAgICAg
IC8vIENvbnZlcnQgdGhlIE5QVmFyaWFudCB0byBhbiBOUFZhcmlhbnREYXRhLgogICAgICAgICBy
ZXN1bHREYXRhID0gbV9ucFJlbW90ZU9iamVjdE1hcC0+bnBWYXJpYW50VG9OUFZhcmlhbnREYXRh
KHJlc3VsdCwgbV9wbHVnaW4pOwpAQCAtMTI2LDkyICsxMjQsODUgQEAgdm9pZCBOUE9iamVjdE1l
c3NhZ2VSZWNlaXZlcjo6aW52b2tlRGVmYQogICAgIAogICAgIC8vIEFuZCByZWxlYXNlIHRoZSBy
ZXN1bHQuCiAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVlKCZyZXN1bHQpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZNb3ZlKHJlc3VsdERhdGEpKTsKIH0KIAotdm9pZCBO
UE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6aGFzUHJvcGVydHkoY29uc3QgTlBJZGVudGlmaWVyRGF0
YSYgcHJvcGVydHlOYW1lRGF0YSwgYm9vbCYgcmV0dXJuVmFsdWUpCit2b2lkIE5QT2JqZWN0TWVz
c2FnZVJlY2VpdmVyOjpoYXNQcm9wZXJ0eShjb25zdCBOUElkZW50aWZpZXJEYXRhJiBwcm9wZXJ0
eU5hbWVEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIGlmIChtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgpIHx8ICFtX25wT2Jq
ZWN0LT5fY2xhc3MtPmhhc1Byb3BlcnR5KSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJv
eWVkKCkgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+aGFzUHJvcGVydHkpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAgICByZXR1cm5WYWx1ZSA9IG1fbnBPYmpl
Y3QtPl9jbGFzcy0+aGFzUHJvcGVydHkobV9ucE9iamVjdCwgcHJvcGVydHlOYW1lRGF0YS5jcmVh
dGVOUElkZW50aWZpZXIoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9ucE9iamVjdC0+X2Ns
YXNzLT5oYXNQcm9wZXJ0eShtX25wT2JqZWN0LCBwcm9wZXJ0eU5hbWVEYXRhLmNyZWF0ZU5QSWRl
bnRpZmllcigpKSk7CiB9CiAKLXZvaWQgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6OmdldFByb3Bl
cnR5KGNvbnN0IE5QSWRlbnRpZmllckRhdGEmIHByb3BlcnR5TmFtZURhdGEsIGJvb2wmIHJldHVy
blZhbHVlLCBOUFZhcmlhbnREYXRhJiByZXN1bHREYXRhKQordm9pZCBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlcjo6Z2V0UHJvcGVydHkoY29uc3QgTlBJZGVudGlmaWVyRGF0YSYgcHJvcGVydHlOYW1l
RGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBOUFZhcmlhbnREYXRhJiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ryb3llZCgp
IHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPmdldFByb3BlcnR5KSB7Ci0gICAgICAgIHJldHVyblZh
bHVlID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fcGx1Z2luLT5p
c0JlaW5nRGVzdHJveWVkKCkgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+Z2V0UHJvcGVydHkpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgeyB9KTsKIAogICAgIE5QVmFy
aWFudCByZXN1bHQ7CiAgICAgVk9JRF9UT19OUFZBUklBTlQocmVzdWx0KTsKIAogICAgIFBsdWdp
bkNvbnRyb2xsZXI6OlBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHByb3RlY3RvcihtX3BsdWdp
bi0+Y29udHJvbGxlcigpKTsKIAotICAgIHJldHVyblZhbHVlID0gbV9ucE9iamVjdC0+X2NsYXNz
LT5nZXRQcm9wZXJ0eShtX25wT2JqZWN0LCBwcm9wZXJ0eU5hbWVEYXRhLmNyZWF0ZU5QSWRlbnRp
ZmllcigpLCAmcmVzdWx0KTsKKyAgICBib29sIHJldHVyblZhbHVlID0gbV9ucE9iamVjdC0+X2Ns
YXNzLT5nZXRQcm9wZXJ0eShtX25wT2JqZWN0LCBwcm9wZXJ0eU5hbWVEYXRhLmNyZWF0ZU5QSWRl
bnRpZmllcigpLCAmcmVzdWx0KTsKICAgICBpZiAoIXJldHVyblZhbHVlKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgeyB9KTsKIAogCi0g
ICAgcmVzdWx0RGF0YSA9IG1fbnBSZW1vdGVPYmplY3RNYXAtPm5wVmFyaWFudFRvTlBWYXJpYW50
RGF0YShyZXN1bHQsIG1fcGx1Z2luKTsKKyAgICBOUFZhcmlhbnREYXRhIHJlc3VsdERhdGEgPSBt
X25wUmVtb3RlT2JqZWN0TWFwLT5ucFZhcmlhbnRUb05QVmFyaWFudERhdGEocmVzdWx0LCBtX3Bs
dWdpbik7CiAKICAgICByZWxlYXNlTlBWYXJpYW50VmFsdWUoJnJlc3VsdCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSwgV1RGTW92ZShyZXN1bHREYXRhKSk7CiB9CiAKLXZvaWQgTlBPYmpl
Y3RNZXNzYWdlUmVjZWl2ZXI6OnNldFByb3BlcnR5KGNvbnN0IE5QSWRlbnRpZmllckRhdGEmIHBy
b3BlcnR5TmFtZURhdGEsIGNvbnN0IE5QVmFyaWFudERhdGEmIHByb3BlcnR5VmFsdWVEYXRhLCBi
b29sJiByZXR1cm5WYWx1ZSkKK3ZvaWQgTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXI6OnNldFByb3Bl
cnR5KGNvbnN0IE5QSWRlbnRpZmllckRhdGEmIHByb3BlcnR5TmFtZURhdGEsIGNvbnN0IE5QVmFy
aWFudERhdGEmIHByb3BlcnR5VmFsdWVEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ry
b3llZCgpIHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPnNldFByb3BlcnR5KSB7Ci0gICAgICAgIHJl
dHVyblZhbHVlID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fcGx1
Z2luLT5pc0JlaW5nRGVzdHJveWVkKCkgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+c2V0UHJvcGVy
dHkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKICAgICBOUFZh
cmlhbnQgcHJvcGVydHlWYWx1ZSA9IG1fbnBSZW1vdGVPYmplY3RNYXAtPm5wVmFyaWFudERhdGFU
b05QVmFyaWFudChwcm9wZXJ0eVZhbHVlRGF0YSwgbV9wbHVnaW4pOwogCiAgICAgUGx1Z2luQ29u
dHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGx1Z2luLT5j
b250cm9sbGVyKCkpOwogCi0gICAgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPnNl
dFByb3BlcnR5KG1fbnBPYmplY3QsIHByb3BlcnR5TmFtZURhdGEuY3JlYXRlTlBJZGVudGlmaWVy
KCksICZwcm9wZXJ0eVZhbHVlKTsKKyAgICBib29sIHJldHVyblZhbHVlID0gbV9ucE9iamVjdC0+
X2NsYXNzLT5zZXRQcm9wZXJ0eShtX25wT2JqZWN0LCBwcm9wZXJ0eU5hbWVEYXRhLmNyZWF0ZU5Q
SWRlbnRpZmllcigpLCAmcHJvcGVydHlWYWx1ZSk7CiAKICAgICByZWxlYXNlTlBWYXJpYW50VmFs
dWUoJnByb3BlcnR5VmFsdWUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlKTsK
IH0KIAotdm9pZCBOUE9iamVjdE1lc3NhZ2VSZWNlaXZlcjo6cmVtb3ZlUHJvcGVydHkoY29uc3Qg
TlBJZGVudGlmaWVyRGF0YSYgcHJvcGVydHlOYW1lRGF0YSwgYm9vbCYgcmV0dXJuVmFsdWUpCit2
b2lkIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBOUElkZW50
aWZpZXJEYXRhJiBwcm9wZXJ0eU5hbWVEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmIChtX3BsdWdpbi0+aXNCZWluZ0Rlc3Ry
b3llZCgpIHx8ICFtX25wT2JqZWN0LT5fY2xhc3MtPnJlbW92ZVByb3BlcnR5KSB7Ci0gICAgICAg
IHJldHVyblZhbHVlID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1f
cGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCkgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+cmVtb3Zl
UHJvcGVydHkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAKLSAg
ICByZXR1cm5WYWx1ZSA9IG1fbnBPYmplY3QtPl9jbGFzcy0+cmVtb3ZlUHJvcGVydHkobV9ucE9i
amVjdCwgcHJvcGVydHlOYW1lRGF0YS5jcmVhdGVOUElkZW50aWZpZXIoKSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIobV9ucE9iamVjdC0+X2NsYXNzLT5yZW1vdmVQcm9wZXJ0eShtX25wT2JqZWN0
LCBwcm9wZXJ0eU5hbWVEYXRhLmNyZWF0ZU5QSWRlbnRpZmllcigpKSk7CiB9CiAKLXZvaWQgTlBP
YmplY3RNZXNzYWdlUmVjZWl2ZXI6OmVudW1lcmF0ZShib29sJiByZXR1cm5WYWx1ZSwgVmVjdG9y
PE5QSWRlbnRpZmllckRhdGE+JiBpZGVudGlmaWVyc0RhdGEpCit2b2lkIE5QT2JqZWN0TWVzc2Fn
ZVJlY2VpdmVyOjplbnVtZXJhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBWZWN0b3I8
TlBJZGVudGlmaWVyRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKG1f
cGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCkgfHwgIU5QX0NMQVNTX1NUUlVDVF9WRVJTSU9OX0hB
U19FTlVNKG1fbnBPYmplY3QtPl9jbGFzcykgfHwgIW1fbnBPYmplY3QtPl9jbGFzcy0+ZW51bWVy
YXRlKSB7Ci0gICAgICAgIHJldHVyblZhbHVlID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgaWYgKG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCkgfHwgIU5QX0NMQVNTX1NU
UlVDVF9WRVJTSU9OX0hBU19FTlVNKG1fbnBPYmplY3QtPl9jbGFzcykgfHwgIW1fbnBPYmplY3Qt
Pl9jbGFzcy0+ZW51bWVyYXRlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UsIHsgfSk7CiAKICAgICBOUElkZW50aWZpZXIqIGlkZW50aWZpZXJzID0gMDsKICAgICB1aW50
MzJfdCBpZGVudGlmaWVyQ291bnQgPSAwOwogCi0gICAgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0
LT5fY2xhc3MtPmVudW1lcmF0ZShtX25wT2JqZWN0LCAmaWRlbnRpZmllcnMsICZpZGVudGlmaWVy
Q291bnQpOworICAgIGJvb2wgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmVudW1l
cmF0ZShtX25wT2JqZWN0LCAmaWRlbnRpZmllcnMsICZpZGVudGlmaWVyQ291bnQpOwogICAgIGlm
ICghcmV0dXJuVmFsdWUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlLCB7IH0pOwogCisgICAgVmVjdG9yPFdlYktpdDo6TlBJZGVudGlmaWVy
RGF0YT4gaWRlbnRpZmllcnNEYXRhOwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBpZGVu
dGlmaWVyQ291bnQ7ICsraSkKICAgICAgICAgaWRlbnRpZmllcnNEYXRhLmFwcGVuZChOUElkZW50
aWZpZXJEYXRhOjpmcm9tTlBJZGVudGlmaWVyKGlkZW50aWZpZXJzW2ldKSk7CiAKICAgICBucG5N
ZW1GcmVlKGlkZW50aWZpZXJzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlLCBXVEZNb3Zl
KGlkZW50aWZpZXJzRGF0YSkpOwogfQogCi12b2lkIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyOjpj
b25zdHJ1Y3QoY29uc3QgVmVjdG9yPE5QVmFyaWFudERhdGE+JiBhcmd1bWVudHNEYXRhLCBib29s
JiByZXR1cm5WYWx1ZSwgTlBWYXJpYW50RGF0YSYgcmVzdWx0RGF0YSkKK3ZvaWQgTlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI6OmNvbnN0cnVjdChjb25zdCBWZWN0b3I8TlBWYXJpYW50RGF0YT4mIGFy
Z3VtZW50c0RhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgTlBWYXJpYW50RGF0YSYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAobV9wbHVnaW4tPmlzQmVpbmdEZXN0
cm95ZWQoKSB8fCAhTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0NUT1IobV9ucE9iamVjdC0+
X2NsYXNzKSB8fCAhbV9ucE9iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QpIHsKLSAgICAgICAgcmV0
dXJuVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAobV9wbHVn
aW4tPmlzQmVpbmdEZXN0cm95ZWQoKSB8fCAhTlBfQ0xBU1NfU1RSVUNUX1ZFUlNJT05fSEFTX0NU
T1IobV9ucE9iamVjdC0+X2NsYXNzKSB8fCAhbV9ucE9iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3Qp
CisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgeyB9KTsKIAogICAgIFZl
Y3RvcjxOUFZhcmlhbnQ+IGFyZ3VtZW50czsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFy
Z3VtZW50c0RhdGEuc2l6ZSgpOyArK2kpCkBAIC0yMjIsNyArMjEzLDggQEAgdm9pZCBOUE9iamVj
dE1lc3NhZ2VSZWNlaXZlcjo6Y29uc3RydWN0KAogCiAgICAgUGx1Z2luQ29udHJvbGxlcjo6UGx1
Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGx1Z2luLT5jb250cm9sbGVyKCkp
OwogCi0gICAgcmV0dXJuVmFsdWUgPSBtX25wT2JqZWN0LT5fY2xhc3MtPmNvbnN0cnVjdChtX25w
T2JqZWN0LCBhcmd1bWVudHMuZGF0YSgpLCBhcmd1bWVudHMuc2l6ZSgpLCAmcmVzdWx0KTsKKyAg
ICBib29sIHJldHVyblZhbHVlID0gbV9ucE9iamVjdC0+X2NsYXNzLT5jb25zdHJ1Y3QobV9ucE9i
amVjdCwgYXJndW1lbnRzLmRhdGEoKSwgYXJndW1lbnRzLnNpemUoKSwgJnJlc3VsdCk7CisgICAg
TlBWYXJpYW50RGF0YSByZXN1bHREYXRhOwogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAg
cmVzdWx0RGF0YSA9IG1fbnBSZW1vdGVPYmplY3RNYXAtPm5wVmFyaWFudFRvTlBWYXJpYW50RGF0
YShyZXN1bHQsIG1fcGx1Z2luKTsKIApAQCAtMjMwLDYgKzIyMiw3IEBAIHZvaWQgTlBPYmplY3RN
ZXNzYWdlUmVjZWl2ZXI6OmNvbnN0cnVjdCgKICAgICAgICAgcmVsZWFzZU5QVmFyaWFudFZhbHVl
KCZhcmd1bWVudHNbaV0pOwogICAgIAogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmcmVzdWx0
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXR1cm5WYWx1ZSwgV1RGTW92ZShyZXN1bHREYXRh
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaAkocmV2aXNp
b24gMjQxMzE3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3Nh
Z2VSZWNlaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBOUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlcl9oCi0jZGVmaW5lIE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyX2gKKyNwcmFnbWEgb25j
ZQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTUzLDE2ICs1MiwxNiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAg
dm9pZCBkZWFsbG9jYXRlKCk7Ci0gICAgdm9pZCBoYXNNZXRob2QoY29uc3QgTlBJZGVudGlmaWVy
RGF0YSYsIGJvb2wmIHJldHVyblZhbHVlKTsKLSAgICB2b2lkIGludm9rZShjb25zdCBOUElkZW50
aWZpZXJEYXRhJiwgY29uc3QgVmVjdG9yPE5QVmFyaWFudERhdGE+JiBhcmd1bWVudHNEYXRhLCBi
b29sJiByZXR1cm5WYWx1ZSwgTlBWYXJpYW50RGF0YSYgcmVzdWx0RGF0YSk7Ci0gICAgdm9pZCBp
bnZva2VEZWZhdWx0KGNvbnN0IFZlY3RvcjxOUFZhcmlhbnREYXRhPiYgYXJndW1lbnRzRGF0YSwg
Ym9vbCYgcmV0dXJuVmFsdWUsIE5QVmFyaWFudERhdGEmIHJlc3VsdERhdGEpOwotICAgIHZvaWQg
aGFzUHJvcGVydHkoY29uc3QgTlBJZGVudGlmaWVyRGF0YSYsIGJvb2wmIHJldHVyblZhbHVlKTsK
LSAgICB2b2lkIGdldFByb3BlcnR5KGNvbnN0IE5QSWRlbnRpZmllckRhdGEmLCBib29sJiByZXR1
cm5WYWx1ZSwgTlBWYXJpYW50RGF0YSYgcmVzdWx0RGF0YSk7Ci0gICAgdm9pZCBzZXRQcm9wZXJ0
eShjb25zdCBOUElkZW50aWZpZXJEYXRhJiwgY29uc3QgTlBWYXJpYW50RGF0YSYgcHJvcGVydHlW
YWx1ZURhdGEsIGJvb2wmIHJldHVyblZhbHVlKTsKLSAgICB2b2lkIHJlbW92ZVByb3BlcnR5KGNv
bnN0IE5QSWRlbnRpZmllckRhdGEmLCBib29sJiByZXR1cm5WYWx1ZSk7Ci0gICAgdm9pZCBlbnVt
ZXJhdGUoYm9vbCYgcmV0dXJuVmFsdWUsIFZlY3RvcjxOUElkZW50aWZpZXJEYXRhPiYgaWRlbnRp
ZmllcnNEYXRhKTsKLSAgICB2b2lkIGNvbnN0cnVjdChjb25zdCBWZWN0b3I8TlBWYXJpYW50RGF0
YT4mIGFyZ3VtZW50c0RhdGEsIGJvb2wmIHJldHVyblZhbHVlLCBOUFZhcmlhbnREYXRhJiByZXN1
bHREYXRhKTsKKyAgICB2b2lkIGRlYWxsb2NhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGhhc01ldGhvZChjb25zdCBOUElkZW50aWZpZXJEYXRhJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBpbnZva2UoY29uc3QgTlBJZGVudGlm
aWVyRGF0YSYsIGNvbnN0IFZlY3RvcjxOUFZhcmlhbnREYXRhPiYgYXJndW1lbnRzRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sLCBOUFZhcmlhbnREYXRhJiYpPiYmKTsKKyAgICB2b2lk
IGludm9rZURlZmF1bHQoY29uc3QgVmVjdG9yPE5QVmFyaWFudERhdGE+JiBhcmd1bWVudHNEYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wsIE5QVmFyaWFudERhdGEmJik+JiYpOworICAg
IHZvaWQgaGFzUHJvcGVydHkoY29uc3QgTlBJZGVudGlmaWVyRGF0YSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ2V0UHJvcGVydHkoY29uc3QgTlBJZGVudGlm
aWVyRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgTlBWYXJpYW50RGF0YSYmKT4m
Jik7CisgICAgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBOUElkZW50aWZpZXJEYXRhJiwgY29uc3Qg
TlBWYXJpYW50RGF0YSYgcHJvcGVydHlWYWx1ZURhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVydHkoY29uc3QgTlBJZGVudGlmaWVyRGF0
YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZW51bWVyYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgVmVjdG9yPE5QSWRlbnRpZmllckRhdGE+JiYp
PiYmKTsKKyAgICB2b2lkIGNvbnN0cnVjdChjb25zdCBWZWN0b3I8TlBWYXJpYW50RGF0YT4mIGFy
Z3VtZW50c0RhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCwgTlBWYXJpYW50RGF0YSYm
KT4mJik7CiAKICAgICBOUFJlbW90ZU9iamVjdE1hcCogbV9ucFJlbW90ZU9iamVjdE1hcDsKICAg
ICBQbHVnaW4qIG1fcGx1Z2luOwpAQCAtNzMsNiArNzIsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLQot
Ci0jZW5kaWYgLy8gTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXJfaApJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJl
Y2VpdmVyLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNDEzMTcpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0yMywxNiArMjMsMTYgQEAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKIAogbWVzc2FnZXMgLT4gTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIgTGVnYWN5UmVjZWl2ZXIg
ewotICAgIERlYWxsb2NhdGUoKSAtPiAoKSBMZWdhY3lTeW5jCi0gICAgSGFzTWV0aG9kKFdlYktp
dDo6TlBJZGVudGlmaWVyRGF0YSBtZXRob2ROYW1lKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgTGVn
YWN5U3luYwotICAgIEludm9rZShXZWJLaXQ6Ok5QSWRlbnRpZmllckRhdGEgbWV0aG9kTmFtZSwg
VmVjdG9yPFdlYktpdDo6TlBWYXJpYW50RGF0YT4gYXJndW1lbnRzRGF0YSkgLT4gKGJvb2wgcmV0
dXJuVmFsdWUsIFdlYktpdDo6TlBWYXJpYW50RGF0YSByZXN1bHREYXRhKSBMZWdhY3lTeW5jCi0g
ICAgSW52b2tlRGVmYXVsdChWZWN0b3I8V2ViS2l0OjpOUFZhcmlhbnREYXRhPiBhcmd1bWVudHNE
YXRhKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViS2l0OjpOUFZhcmlhbnREYXRhIHJlc3VsdERh
dGEpIExlZ2FjeVN5bmMKLSAgICBIYXNQcm9wZXJ0eShXZWJLaXQ6Ok5QSWRlbnRpZmllckRhdGEg
cHJvcGVydHlOYW1lKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgTGVnYWN5U3luYwotICAgIEdldFBy
b3BlcnR5KFdlYktpdDo6TlBJZGVudGlmaWVyRGF0YSBwcm9wZXJ0eU5hbWUpIC0+IChib29sIHJl
dHVyblZhbHVlLCBXZWJLaXQ6Ok5QVmFyaWFudERhdGEgcmVzdWx0RGF0YSkgTGVnYWN5U3luYwot
ICAgIFNldFByb3BlcnR5KFdlYktpdDo6TlBJZGVudGlmaWVyRGF0YSBwcm9wZXJ0eU5hbWUsIFdl
YktpdDo6TlBWYXJpYW50RGF0YSBwcm9wZXJ0eVZhbHVlRGF0YSkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUpIExlZ2FjeVN5bmMKLSAgICBSZW1vdmVQcm9wZXJ0eShXZWJLaXQ6Ok5QSWRlbnRpZmllckRh
dGEgcHJvcGVydHlOYW1lKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgTGVnYWN5U3luYwotICAgIEVu
dW1lcmF0ZSgpIC0+IChib29sIHJldHVyblZhbHVlLCBWZWN0b3I8V2ViS2l0OjpOUElkZW50aWZp
ZXJEYXRhPiBpZGVudGlmaWVyc0RhdGEpIExlZ2FjeVN5bmMKLSAgICBDb25zdHJ1Y3QoVmVjdG9y
PFdlYktpdDo6TlBWYXJpYW50RGF0YT4gYXJndW1lbnRzRGF0YSkgLT4gKGJvb2wgcmV0dXJuVmFs
dWUsIFdlYktpdDo6TlBWYXJpYW50RGF0YSByZXN1bHREYXRhKSBMZWdhY3lTeW5jCisgICAgRGVh
bGxvY2F0ZSgpIC0+ICgpIERlbGF5ZWQKKyAgICBIYXNNZXRob2QoV2ViS2l0OjpOUElkZW50aWZp
ZXJEYXRhIG1ldGhvZE5hbWUpIC0+IChib29sIHJldHVyblZhbHVlKSBEZWxheWVkCisgICAgSW52
b2tlKFdlYktpdDo6TlBJZGVudGlmaWVyRGF0YSBtZXRob2ROYW1lLCBWZWN0b3I8V2ViS2l0OjpO
UFZhcmlhbnREYXRhPiBhcmd1bWVudHNEYXRhKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViS2l0
OjpOUFZhcmlhbnREYXRhIHJlc3VsdERhdGEpIERlbGF5ZWQKKyAgICBJbnZva2VEZWZhdWx0KFZl
Y3RvcjxXZWJLaXQ6Ok5QVmFyaWFudERhdGE+IGFyZ3VtZW50c0RhdGEpIC0+IChib29sIHJldHVy
blZhbHVlLCBXZWJLaXQ6Ok5QVmFyaWFudERhdGEgcmVzdWx0RGF0YSkgRGVsYXllZAorICAgIEhh
c1Byb3BlcnR5KFdlYktpdDo6TlBJZGVudGlmaWVyRGF0YSBwcm9wZXJ0eU5hbWUpIC0+IChib29s
IHJldHVyblZhbHVlKSBEZWxheWVkCisgICAgR2V0UHJvcGVydHkoV2ViS2l0OjpOUElkZW50aWZp
ZXJEYXRhIHByb3BlcnR5TmFtZSkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFdlYktpdDo6TlBWYXJp
YW50RGF0YSByZXN1bHREYXRhKSBEZWxheWVkCisgICAgU2V0UHJvcGVydHkoV2ViS2l0OjpOUElk
ZW50aWZpZXJEYXRhIHByb3BlcnR5TmFtZSwgV2ViS2l0OjpOUFZhcmlhbnREYXRhIHByb3BlcnR5
VmFsdWVEYXRhKSAtPiAoYm9vbCByZXR1cm5WYWx1ZSkgRGVsYXllZAorICAgIFJlbW92ZVByb3Bl
cnR5KFdlYktpdDo6TlBJZGVudGlmaWVyRGF0YSBwcm9wZXJ0eU5hbWUpIC0+IChib29sIHJldHVy
blZhbHVlKSBEZWxheWVkCisgICAgRW51bWVyYXRlKCkgLT4gKGJvb2wgcmV0dXJuVmFsdWUsIFZl
Y3RvcjxXZWJLaXQ6Ok5QSWRlbnRpZmllckRhdGE+IGlkZW50aWZpZXJzRGF0YSkgRGVsYXllZAor
ICAgIENvbnN0cnVjdChWZWN0b3I8V2ViS2l0OjpOUFZhcmlhbnREYXRhPiBhcmd1bWVudHNEYXRh
KSAtPiAoYm9vbCByZXR1cm5WYWx1ZSwgV2ViS2l0OjpOUFZhcmlhbnREYXRhIHJlc3VsdERhdGEp
IERlbGF5ZWQKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1NlY0l0ZW1TaGltUHJveHkuY3BwCShyZXZpc2lvbiAyNDEzMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDE4ICs2MCwxOCBAQCB2b2lkIFNlY0l0ZW1TaGltUHJveHk6OmRpZFJlY2VpdmVNZXNz
YWdlCiB7CiB9CiAKLXZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6c2VjSXRlbVJlcXVlc3QoY29uc3Qg
U2VjSXRlbVJlcXVlc3REYXRhJiByZXF1ZXN0LCBTZWNJdGVtUmVzcG9uc2VEYXRhJiByZXNwb25z
ZSkKK3ZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6c2VjSXRlbVJlcXVlc3QoY29uc3QgU2VjSXRlbVJl
cXVlc3REYXRhJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNlY0l0ZW1SZXNwb25z
ZURhdGEmJik+JiYgcmVzcG9uc2UpCiB7CiAgICAgc3dpdGNoIChyZXF1ZXN0LnR5cGUoKSkgewog
ICAgIGNhc2UgU2VjSXRlbVJlcXVlc3REYXRhOjpJbnZhbGlkOgogICAgICAgICBMT0dfRVJST1Io
IlNlY0l0ZW1TaGltUHJveHk6OnNlY0l0ZW1SZXF1ZXN0IHJlY2VpdmVkIGFuIGludmFsaWQgZGF0
YSByZXF1ZXN0LiBQbGVhc2UgZmlsZSBhIGJ1ZyBpZiB5b3Uga25vdyBob3cgeW91IGNhdXNlZCB0
aGlzLiIpOwotICAgICAgICByZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEoZXJyU2VjUGFy
YW0sIG51bGxwdHIpOworICAgICAgICByZXNwb25zZShTZWNJdGVtUmVzcG9uc2VEYXRhKGVyclNl
Y1BhcmFtLCBudWxscHRyKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTZWNJdGVtUmVx
dWVzdERhdGE6OkNvcHlNYXRjaGluZzogewogICAgICAgICBDRlR5cGVSZWYgcmVzdWx0T2JqZWN0
ID0gMDsKICAgICAgICAgT1NTdGF0dXMgcmVzdWx0Q29kZSA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmco
cmVxdWVzdC5xdWVyeSgpLCAmcmVzdWx0T2JqZWN0KTsKLSAgICAgICAgcmVzcG9uc2UgPSBTZWNJ
dGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIGFkb3B0Q0YocmVzdWx0T2JqZWN0KS5nZXQoKSk7
CisgICAgICAgIHJlc3BvbnNlKFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgYWRvcHRD
RihyZXN1bHRPYmplY3QpLmdldCgpKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzks
MTkgKzc5LDE5IEBAIHZvaWQgU2VjSXRlbVNoaW1Qcm94eTo6c2VjSXRlbVJlcXVlc3QoY28KICAg
ICAgICAgLy8gUmV0dXJuIHZhbHVlIG9mIFNlY0l0ZW1BZGQgaXMgb2Z0ZW4gaWdub3JlZC4gRXZl
biBpZiBpdCBpc24ndCwgd2UgZG9uJ3QgaGF2ZSB0aGUgYWJpbGl0eSB0bwogICAgICAgICAvLyBz
ZXJpYWxpemUgU2VjS2V5Y2hhaW5JdGVtUmVmLgogICAgICAgICBPU1N0YXR1cyByZXN1bHRDb2Rl
ID0gU2VjSXRlbUFkZChyZXF1ZXN0LnF1ZXJ5KCksIG51bGxwdHIpOwotICAgICAgICByZXNwb25z
ZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgbnVsbHB0cik7CisgICAgICAgIHJl
c3BvbnNlKFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgbnVsbHB0cikpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBjYXNlIFNlY0l0ZW1SZXF1ZXN0RGF0YTo6VXBkYXRlOiB7
CiAgICAgICAgIE9TU3RhdHVzIHJlc3VsdENvZGUgPSBTZWNJdGVtVXBkYXRlKHJlcXVlc3QucXVl
cnkoKSwgcmVxdWVzdC5hdHRyaWJ1dGVzVG9NYXRjaCgpKTsKLSAgICAgICAgcmVzcG9uc2UgPSBT
ZWNJdGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIDApOworICAgICAgICByZXNwb25zZShTZWNJ
dGVtUmVzcG9uc2VEYXRhKHJlc3VsdENvZGUsIDApKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgY2FzZSBTZWNJdGVtUmVxdWVzdERhdGE6OkRlbGV0ZTogewogICAgICAgICBPU1N0YXR1
cyByZXN1bHRDb2RlID0gU2VjSXRlbURlbGV0ZShyZXF1ZXN0LnF1ZXJ5KCkpOwotICAgICAgICBy
ZXNwb25zZSA9IFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgMCk7CisgICAgICAgIHJl
c3BvbnNlKFNlY0l0ZW1SZXNwb25zZURhdGEocmVzdWx0Q29kZSwgMCkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0
ZW1TaGltUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oCShyZXZpc2lvbiAyNDEzMTcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Qcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZWNJdGVtUmVxdWVzdChjb25zdCBT
ZWNJdGVtUmVxdWVzdERhdGEmLCBTZWNJdGVtUmVzcG9uc2VEYXRhJik7CisgICAgdm9pZCBzZWNJ
dGVtUmVxdWVzdChjb25zdCBTZWNJdGVtUmVxdWVzdERhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNlY0l0ZW1SZXNwb25zZURhdGEmJik+JiYpOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9x
dWV1ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvU2VjSXRlbVNoaW1Q
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvU2VjSXRlbVNoaW1Qcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjQxMzE3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1NlY0l0ZW1TaGltUHJveHkubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+IFNlY0l0ZW1TaGltUHJv
eHkgewogCiAjaWYgRU5BQkxFKFNFQ19JVEVNX1NISU0pCi0gICAgU2VjSXRlbVJlcXVlc3QoV2Vi
S2l0OjpTZWNJdGVtUmVxdWVzdERhdGEgcmVxdWVzdCkgLT4gKFdlYktpdDo6U2VjSXRlbVJlc3Bv
bnNlRGF0YSByZXNwb25zZSkgTGVnYWN5U3luYworICAgIFNlY0l0ZW1SZXF1ZXN0KFdlYktpdDo6
U2VjSXRlbVJlcXVlc3REYXRhIHJlcXVlc3QpIC0+IChXZWJLaXQ6OlNlY0l0ZW1SZXNwb25zZURh
dGEgcmVzcG9uc2UpIERlbGF5ZWQKICNlbmRpZgogCiB9Cg==
</data>
<flag name="review"
          id="378499"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>