<?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>178299</bug_id>
          
          <creation_ts>2017-10-13 16:04:45 -0700</creation_ts>
          <short_desc>Adopt type trait template aliases everywhere in WTF</short_desc>
          <delta_ts>2017-10-18 11:23:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>aestes</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1360288</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-13 16:04:45 -0700</bug_when>
    <thetext>Adopt type trait template aliases everywhere in WTF</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360302</commentid>
    <comment_count>1</comment_count>
      <attachid>323766</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-13 16:20:59 -0700</bug_when>
    <thetext>Created attachment 323766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360304</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-13 16:23:15 -0700</bug_when>
    <thetext>Attachment 323766 did not pass style-queue:


ERROR: Source/WTF/wtf/Atomics.h:382:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Atomics.h:382:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Atomics.h:403:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/Atomics.h:403:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360388</commentid>
    <comment_count>3</comment_count>
      <attachid>323766</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-10-13 21:17:32 -0700</bug_when>
    <thetext>Comment on attachment 323766
Patch

r=me, nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360389</commentid>
    <comment_count>4</comment_count>
      <attachid>323766</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-13 21:45:23 -0700</bug_when>
    <thetext>Comment on attachment 323766
Patch

Clearing flags on attachment: 323766

Committed r223316: &lt;https://trac.webkit.org/changeset/223316&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360390</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-13 21:45:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360391</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-13 21:46:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/34992048&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1361800</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-18 11:23:45 -0700</bug_when>
    <thetext>Rolled out in r223617: &lt;https://trac.webkit.org/changeset/223617&gt;

See rdar://problem/35047351 for details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323766</attachid>
            <date>2017-10-13 16:20:59 -0700</date>
            <delta_ts>2017-10-13 21:45:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178299-20171013162037.patch</filename>
            <type>text/plain</type>
            <size>59029</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjMzMDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE3LTEwLTEzICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRvcHQgdHlwZSB0cmFpdCB0ZW1wbGF0ZSBhbGlhc2VzIGV2
ZXJ5d2hlcmUgaW4gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzgyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZG9wdCB0eXBlIHRyYWl0IHRlbXBsYXRlIGFsaWFzZXMgKGUuZy4gcmVwbGFjZSAn
dHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFNvdXJjZT46OnR5cGUnCisgICAgICAgIHdpdGgg
J3N0ZDo6bWFrZV91bnNpZ25lZF90PFNvdXJjZT4nKS4gQWxzbyBhZG9wdCB1c2luZyBvdmVyIHR5
cGVkZWYgY29uc2lzdGVudGx5LgorCisgICAgICAgICogd3RmL0F0b21pY3MuaDoKKyAgICAgICAg
KiB3dGYvQ2FnZWRVbmlxdWVQdHIuaDoKKyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMu
aDoKKyAgICAgICAgKiB3dGYvQ29tcGxldGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKiB3dGYvRnVu
Y3Rpb24uaDoKKyAgICAgICAgKiB3dGYvSGFzaENvdW50ZWRTZXQuaDoKKyAgICAgICAgKiB3dGYv
SGFzaEZ1bmN0aW9ucy5oOgorICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAgICogd3Rm
L0hhc2hTZXQuaDoKKyAgICAgICAgKiB3dGYvSGFzaFRhYmxlLmg6CisgICAgICAgICogd3RmL0hh
c2hUcmFpdHMuaDoKKyAgICAgICAgKiB3dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg6Cisg
ICAgICAgICogd3RmL0l0ZXJhdG9yQWRhcHRvcnMuaDoKKyAgICAgICAgKiB3dGYvS2V5VmFsdWVQ
YWlyLmg6CisgICAgICAgICogd3RmL0xFQkRlY29kZXIuaDoKKyAgICAgICAgKiB3dGYvTGlzdEhh
c2hTZXQuaDoKKyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOgorICAgICAgICAqIHd0Zi9OZXZl
ckRlc3Ryb3llZC5oOgorICAgICAgICAqIHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKiB3dGYv
UmV0YWluUHRyLmg6CisgICAgICAgICogd3RmL1NpemVMaW1pdHMuY3BwOgorICAgICAgICAqIHd0
Zi9TdGRMaWJFeHRyYXMuaDoKKyAgICAgICAgKiB3dGYvU3lzdGVtRnJlZS5oOgorICAgICAgICAq
IHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAqIHd0Zi9UeXBlQ2FzdHMuaDoKKyAgICAg
ICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgICogd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5oOgorCiAyMDE3LTEwLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIEV4cGVjdGVkLCBIYXNoTWFwLCBIYXNoU2V0LCBh
bmQgU0hBMSB0byB3dGYvRm9yd2FyZC5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQXRvbWljcy5oCShyZXZpc2lvbiAyMjMzMDYp
CisrKyBTb3VyY2UvV1RGL3d0Zi9BdG9taWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Niw3ICsz
NDYsNyBAQCBBTFdBWVNfSU5MSU5FIERlcGVuZGVuY3kgbnVsbERlcGVuZGVuY3koCiAgICAgcmV0
dXJuIDA7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxzaXplb2YoVCkgPT0gOD46OnR5cGUqID0gbnVsbHB0cj4KK3RlbXBsYXRlIDx0eXBlbmFtZSBU
LCBzdGQ6OmVuYWJsZV9pZl90PHNpemVvZihUKSA9PSA4PiogPSBudWxscHRyPgogQUxXQVlTX0lO
TElORSBEZXBlbmRlbmN5IGRlcGVuZGVuY3koVCB2YWx1ZSkKIHsKICAgICB1bnNpZ25lZCBkZXBl
bmRlbmN5OwpAQCAtMzc5LDcgKzM3OSw3IEBAIEFMV0FZU19JTkxJTkUgRGVwZW5kZW5jeSBkZXBl
bmRlbmN5KFQgdmEKIAogLy8gRklYTUU6IFRoaXMgY29kZSBpcyBhbG1vc3QgaWRlbnRpY2FsIHRv
IHRoZSBvdGhlciBkZXBlbmRlbmN5KCkgb3ZlcmxvYWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDA1Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDQ+Ojp0eXBlKiA9IG51bGxwdHI+Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gND4qID0gbnVs
bHB0cj4KIEFMV0FZU19JTkxJTkUgRGVwZW5kZW5jeSBkZXBlbmRlbmN5KFQgdmFsdWUpCiB7CiAg
ICAgdW5zaWduZWQgZGVwZW5kZW5jeTsKQEAgLTQwMCwxMyArNDAwLDEzIEBAIEFMV0FZU19JTkxJ
TkUgRGVwZW5kZW5jeSBkZXBlbmRlbmN5KFQgdmEKICAgICByZXR1cm4gZGVwZW5kZW5jeTsKIH0K
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHNpemVvZihU
KSA9PSAyPjo6dHlwZSogPSBudWxscHRyPgordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6ZW5h
YmxlX2lmX3Q8c2l6ZW9mKFQpID09IDI+KiA9IG51bGxwdHI+CiBBTFdBWVNfSU5MSU5FIERlcGVu
ZGVuY3kgZGVwZW5kZW5jeShUIHZhbHVlKQogewogICAgIHJldHVybiBkZXBlbmRlbmN5KHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c2l6ZW9mKFQpID09IDE+Ojp0eXBlKiA9IG51bGxwdHI+Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjplbmFibGVfaWZfdDxzaXplb2YoVCkgPT0gMT4qID0g
bnVsbHB0cj4KIEFMV0FZU19JTkxJTkUgRGVwZW5kZW5jeSBkZXBlbmRlbmN5KFQgdmFsdWUpCiB7
CiAgICAgcmV0dXJuIGRlcGVuZGVuY3koc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9DYWdlZFVuaXF1ZVB0ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0NhZ2VkVW5pcXVlUHRyLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9X
VEYvd3RmL0NhZ2VkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAg
cHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPEdpZ2FjYWdlOjpLaW5kIGtpbmQsIHR5cGVuYW1lIFQ+
Ci1jbGFzcyBDYWdlZFVuaXF1ZVB0cjxraW5kLCBUW10sIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+Ojp0eXBlPiA6IHB1Ymxp
YyBDYWdlZFB0cjxraW5kLCBUPiB7CitjbGFzcyBDYWdlZFVuaXF1ZVB0cjxraW5kLCBUW10sIHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZT4+
IDogcHVibGljIENhZ2VkUHRyPGtpbmQsIFQ+IHsKIHB1YmxpYzoKICAgICBDYWdlZFVuaXF1ZVB0
cigpIDogQ2FnZWRQdHI8a2luZCwgVD4oKSB7IH0KICAgICAKQEAgLTEzMCw3ICsxMzAsNyBAQCBw
cml2YXRlOgogfTsKIAogdGVtcGxhdGU8R2lnYWNhZ2U6OktpbmQga2luZCwgdHlwZW5hbWUgVD4K
LWNsYXNzIENhZ2VkVW5pcXVlUHRyPGtpbmQsIFRbXSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
IXN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+Ojp0eXBlPiA6IHB1Ymxp
YyBDYWdlZFB0cjxraW5kLCBUPiB7CitjbGFzcyBDYWdlZFVuaXF1ZVB0cjxraW5kLCBUW10sIHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxUPjo6dmFsdWU+
PiA6IHB1YmxpYyBDYWdlZFB0cjxraW5kLCBUPiB7CiBwdWJsaWM6CiAgICAgQ2FnZWRVbmlxdWVQ
dHIoKSA6IENhZ2VkUHRyPGtpbmQsIFQ+KCkgeyB9CiAgICAgCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9DaGVja2VkQXJpdGhtZXRpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0NoZWNr
ZWRBcml0aG1ldGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyCiAgICAgewogICAgICAgICAvLyBXaGVu
IGNvbnZlcnRpbmcgdmFsdWUgdG8gdW5zaWduZWQgU291cmNlLCB2YWx1ZSB3aWxsIGJlY29tZSBh
IGJpZyB2YWx1ZSBpZiB2YWx1ZSBpcyBuZWdhdGl2ZS4KICAgICAgICAgLy8gQ2FzdGVkIHZhbHVl
IHdpbGwgYmVjb21lIGJpZ2dlciB0aGFuIFRhcmdldDo6bWF4IGFzIFNvdXJjZSBpcyBiaWdnZXIg
dGhhbiBUYXJnZXQuCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6Om1h
a2VfdW5zaWduZWQ8U291cmNlPjo6dHlwZT4odmFsdWUpIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8
VGFyZ2V0Pjo6bWF4KCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6Om1ha2VfdW5z
aWduZWRfdDxTb3VyY2U+Pih2YWx1ZSkgPD0gc3RkOjpudW1lcmljX2xpbWl0czxUYXJnZXQ+Ojpt
YXgoKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgJKHJl
dmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI8T3V0
KEluLi4uKT4gewogcHVibGljOgogICAgIENvbXBsZXRpb25IYW5kbGVyKCkgPSBkZWZhdWx0Owog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZh
bHVlPjo6dHlwZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+
Ojp2YWx1ZT4+CiAgICAgQ29tcGxldGlvbkhhbmRsZXIoQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUp
CiAgICAgICAgIDogbV9mdW5jdGlvbihXVEZNb3ZlKGNhbGxhYmxlKSkKICAgICB7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Z1
bmN0aW9uLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJsaWM6CiAgICAgRnVuY3Rpb24o
KSA9IGRlZmF1bHQ7CiAgICAgRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQogCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxl
X2lmPCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVu
Y3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp0eXBlPjo6
dmFsdWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVl
Pjo6dHlwZT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gc3Rk
OjplbmFibGVfaWZfdDwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBz
dGQ6OmlzX2Z1bmN0aW9uPHN0ZDo6cmVtb3ZlX3BvaW50ZXJfdDxDYWxsYWJsZVR5cGU+Pjo6dmFs
dWUpICYmIHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPj4K
ICAgICBGdW5jdGlvbihDYWxsYWJsZVR5cGUmJiBjYWxsYWJsZSkKICAgICAgICAgOiBtX2NhbGxh
YmxlV3JhcHBlcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxhYmxlV3JhcHBlcjxDYWxsYWJsZVR5cGU+
PihXVEZNb3ZlKGNhbGxhYmxlKSkpCiAgICAgewogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0aW9uVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3BvaW50ZXI8RnVuY3Rpb25UeXBlPjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCBjbGFzcyA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19wb2ludGVyPEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVu
Y3Rpb248c3RkOjpyZW1vdmVfcG9pbnRlcl90PEZ1bmN0aW9uVHlwZT4+Ojp2YWx1ZT4+CiAgICAg
RnVuY3Rpb24oRnVuY3Rpb25UeXBlIGYpCiAgICAgICAgIDogbV9jYWxsYWJsZVdyYXBwZXIoc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlPj4oV1RGTW92ZShmKSkp
CiAgICAgewpAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGFibGVXcmFwcGVyOyB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+
Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFs
dWU+Ojp0eXBlPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSBz
dGQ6OmVuYWJsZV9pZl90PCEoc3RkOjppc19wb2ludGVyPENhbGxhYmxlVHlwZT46OnZhbHVlICYm
IHN0ZDo6aXNfZnVuY3Rpb248c3RkOjpyZW1vdmVfcG9pbnRlcl90PENhbGxhYmxlVHlwZT4+Ojp2
YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+
PgogICAgIEZ1bmN0aW9uJiBvcGVyYXRvcj0oQ2FsbGFibGVUeXBlJiYgY2FsbGFibGUpCiAgICAg
ewogICAgICAgICBtX2NhbGxhYmxlV3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVX
cmFwcGVyPENhbGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZSwgY2xh
c3MgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8RnVuY3Rpb25UeXBl
Pjo6dmFsdWUgJiYgc3RkOjppc19mdW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVy
PEZ1bmN0aW9uVHlwZT46OnR5cGU+Ojp2YWx1ZT46OnR5cGU+CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rpb25UeXBlLCBjbGFzcyA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVy
PEZ1bmN0aW9uVHlwZT46OnZhbHVlICYmIHN0ZDo6aXNfZnVuY3Rpb248c3RkOjpyZW1vdmVfcG9p
bnRlcl90PEZ1bmN0aW9uVHlwZT4+Ojp2YWx1ZT4+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShG
dW5jdGlvblR5cGUgZikKICAgICB7CiAgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsYWJsZVdyYXBwZXI8RnVuY3Rpb25UeXBlPj4oV1RGTW92ZShmKSk7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoQ291bnRlZFNldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0hhc2hDb3VudGVkU2V0LmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9X
VEYvd3RmL0hhc2hDb3VudGVkU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMSArMTAxLDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAvLyBPdmVybG9hZHMgZm9yIHNt
YXJ0IHBvaW50ZXIga2V5cyB0aGF0IHRha2UgdGhlIHJhdyBwb2ludGVyIHR5cGUgYXMgdGhlIHBh
cmFtZXRlci4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+Ojp0eXBlIGZpbmQo
dHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2
YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUg
Y29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJ
c1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+Ojp0eXBlIGNvdW50KHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZh
bHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJv
b2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFy
dFB0cjxWPjo6dmFsdWUsIGl0ZXJhdG9yPiBmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6
UHRyVHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gc3RkOjplbmFi
bGVfaWZfdDxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+IGZpbmQodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWID0gVmFsdWVUeXBlPiBzdGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Vj46OnZhbHVlLCBi
b29sPiBjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNT
bWFydFB0cjxWPjo6dmFsdWUsIHVuc2lnbmVkPiBjb3VudCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Vj46OlB0clR5cGUpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+
IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+IHJlbW92ZSh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOwogCiBwcml2YXRlOgogICAgIEltcGxUeXBl
IG1faW1wbDsKQEAgLTI3NiwzNSArMjc2LDM1IEBAIGlubGluZSB2b2lkIEhhc2hDb3VudGVkU2V0
PFZhbHVlLCBIYXNoRnUKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KIHRlbXBsYXRlPHR5cGVuYW1lIFY+Ci1pbmxpbmUg
YXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIC0+IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBh
dXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpmaW5kKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZf
dDxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgaXRlcmF0b3I+CiB7CiAgICAgcmV0dXJuIG1faW1wbC5m
aW5kKHZhbHVlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hG
dW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KIHRlbXBsYXRlPHR5cGVuYW1lIFY+Ci1pbmxpbmUg
YXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUpIGNvbnN0IC0+IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBjb25zdF9pdGVyYXRvcj46OnR5
cGUKK2lubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHM+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3Qg
LT4gc3RkOjplbmFibGVfaWZfdDxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+
CiB7CiAgICAgcmV0dXJuIG1faW1wbC5maW5kKHZhbHVlKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cz4KIHRlbXBs
YXRlPHR5cGVuYW1lIFY+Ci1pbmxpbmUgYXV0byBIYXNoQ291bnRlZFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6Y29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJU
eXBlIHZhbHVlKSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPFY+
Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hDb3VudGVkU2V0PFZhbHVlLCBI
YXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojpjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46
OlB0clR5cGUgdmFsdWUpIGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxWPjo6
dmFsdWUsIGJvb2w+CiB7CiAgICAgcmV0dXJuIG1faW1wbC5jb250YWlucyh2YWx1ZSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFt
ZSBUcmFpdHM+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotaW5saW5lIGF1dG8gSGFzaENvdW50ZWRT
ZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvdW50KHR5cGVuYW1lIEdldFB0ckhl
bHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
SXNTbWFydFB0cjxWPjo6dmFsdWUsIHVuc2lnbmVkPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaENv
dW50ZWRTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OmNvdW50KHR5cGVuYW1lIEdl
dFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgY29uc3QgLT4gc3RkOjplbmFibGVfaWZfdDxJ
c1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgdW5zaWduZWQ+CiB7CiAgICAgcmV0dXJuIG1faW1wbC5nZXQo
dmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0
aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogdGVtcGxhdGU8dHlwZW5hbWUgVj4KLWlubGluZSBhdXRv
IEhhc2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlw
ZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD46OnR5cGUKK2lubGluZSBhdXRvIEhh
c2hDb3VudGVkU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1vdmUodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiBzdGQ6OmVuYWJsZV9pZl90PElz
U21hcnRQdHI8Vj46OnZhbHVlLCBib29sPgogewogICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1
ZSkpOwogfQpJbmRleDogU291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMjIzMzA2KQorKysg
U291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMzAg
KzE3OCwzMCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUeXBl
cz4KICAgICBzdHJ1Y3QgVHVwbGVIYXNoIHsKICAgICAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAw
PgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA8IHNpemVvZi4uLihU
eXBlcykgLSAxLCB1bnNpZ25lZD46OnR5cGUgaGFzaChjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4u
PiYgdCkKKyAgICAgICAgc3RhdGljIHN0ZDo6ZW5hYmxlX2lmX3Q8SSA8IHNpemVvZi4uLihUeXBl
cykgLSAxLCB1bnNpZ25lZD4gaGFzaChjb25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgdCkKICAg
ICAgICAgewotICAgICAgICAgICAgdXNpbmcgSXRoVHVwbGVFbGVtZW50VHlwZSA9IHR5cGVuYW1l
IHN0ZDo6dHVwbGVfZWxlbWVudDxJLCB0eXBlbmFtZSBzdGQ6OnR1cGxlPFR5cGVzLi4uPj46OnR5
cGU7CisgICAgICAgICAgICB1c2luZyBJdGhUdXBsZUVsZW1lbnRUeXBlID0gc3RkOjp0dXBsZV9l
bGVtZW50X3Q8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4uLj4+OwogICAgICAgICAgICAg
cmV0dXJuIHBhaXJJbnRIYXNoKERlZmF1bHRIYXNoPEl0aFR1cGxlRWxlbWVudFR5cGU+OjpIYXNo
OjpoYXNoKHN0ZDo6Z2V0PEk+KHQpKSwgaGFzaDxJICsgMT4odCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAwPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8SSA9PSBzaXplb2YuLi4oVHlwZXMpIC0gMSwgdW5zaWduZWQ+Ojp0eXBlIGhh
c2goY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIHQpCisgICAgICAgIHN0YXRpYyBzdGQ6OmVu
YWJsZV9pZl90PEkgPT0gc2l6ZW9mLi4uKFR5cGVzKSAtIDEsIHVuc2lnbmVkPiBoYXNoKGNvbnN0
IHN0ZDo6dHVwbGU8VHlwZXMuLi4+JiB0KQogICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBJ
dGhUdXBsZUVsZW1lbnRUeXBlID0gdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5cGVu
YW1lIHN0ZDo6dHVwbGU8VHlwZXMuLi4+Pjo6dHlwZTsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1
cGxlRWxlbWVudFR5cGUgPSBzdGQ6OnR1cGxlX2VsZW1lbnRfdDxJLCB0eXBlbmFtZSBzdGQ6OnR1
cGxlPFR5cGVzLi4uPj47CiAgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8SXRoVHVwbGVF
bGVtZW50VHlwZT46Okhhc2g6Omhhc2goc3RkOjpnZXQ8ST4odCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdGVtcGxhdGU8c2l6ZV90IEkgPSAwPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8SSA8IHNpemVvZi4uLihUeXBlcykgLSAxLCBib29sPjo6dHlwZSBlcXVhbChj
b25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgYSwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4m
IGIpCisgICAgICAgIHN0YXRpYyBzdGQ6OmVuYWJsZV9pZl90PEkgPCBzaXplb2YuLi4oVHlwZXMp
IC0gMSwgYm9vbD4gZXF1YWwoY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4mIGEsIGNvbnN0IHN0
ZDo6dHVwbGU8VHlwZXMuLi4+JiBiKQogICAgICAgICB7Ci0gICAgICAgICAgICB1c2luZyBJdGhU
dXBsZUVsZW1lbnRUeXBlID0gdHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PEksIHR5cGVuYW1l
IHN0ZDo6dHVwbGU8VHlwZXMuLi4+Pjo6dHlwZTsKKyAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxl
RWxlbWVudFR5cGUgPSBzdGQ6OnR1cGxlX2VsZW1lbnRfdDxJLCB0eXBlbmFtZSBzdGQ6OnR1cGxl
PFR5cGVzLi4uPj47CiAgICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8SXRoVHVwbGVFbGVt
ZW50VHlwZT46Okhhc2g6OmVxdWFsKHN0ZDo6Z2V0PEk+KGEpLCBzdGQ6OmdldDxJPihiKSkgJiYg
ZXF1YWw8SSArIDE+KGEsIGIpOwogICAgICAgICB9CiAKICAgICAgICAgdGVtcGxhdGU8c2l6ZV90
IEkgPSAwPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SSA9PSBzaXpl
b2YuLi4oVHlwZXMpIC0gMSwgYm9vbD46OnR5cGUgZXF1YWwoY29uc3Qgc3RkOjp0dXBsZTxUeXBl
cy4uLj4mIGEsIGNvbnN0IHN0ZDo6dHVwbGU8VHlwZXMuLi4+JiBiKQorICAgICAgICBzdGF0aWMg
c3RkOjplbmFibGVfaWZfdDxJID09IHNpemVvZi4uLihUeXBlcykgLSAxLCBib29sPiBlcXVhbChj
b25zdCBzdGQ6OnR1cGxlPFR5cGVzLi4uPiYgYSwgY29uc3Qgc3RkOjp0dXBsZTxUeXBlcy4uLj4m
IGIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIEl0aFR1cGxlRWxlbWVudFR5cGUgPSB0
eXBlbmFtZSBzdGQ6OnR1cGxlX2VsZW1lbnQ8SSwgdHlwZW5hbWUgc3RkOjp0dXBsZTxUeXBlcy4u
Lj4+Ojp0eXBlOworICAgICAgICAgICAgdXNpbmcgSXRoVHVwbGVFbGVtZW50VHlwZSA9IHN0ZDo6
dHVwbGVfZWxlbWVudF90PEksIHR5cGVuYW1lIHN0ZDo6dHVwbGU8VHlwZXMuLi4+PjsKICAgICAg
ICAgICAgIHJldHVybiBEZWZhdWx0SGFzaDxJdGhUdXBsZUVsZW1lbnRUeXBlPjo6SGFzaDo6ZXF1
YWwoc3RkOjpnZXQ8ST4oYSksIHN0ZDo6Z2V0PEk+KGIpKTsKICAgICAgICAgfQogCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFz
aE1hcC5oCShyZXZpc2lvbiAyMjMzMDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2MCwxMyArMTYwLDEzIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gQWRkUmVzdWx0
IGFkZChLJiYsIFYmJik7CiAKICAgICAvLyBPdmVybG9hZHMgZm9yIHNtYXJ0IHBvaW50ZXIga2V5
cyB0aGF0IHRha2UgdGhlIHJhdyBwb2ludGVyIHR5cGUgYXMgdGhlIHBhcmFtZXRlci4KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxLPjo6dmFsdWUsIGl0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1lIEdldFB0ckhl
bHBlcjxLPjo6UHRyVHlwZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBjb25zdF9pdGVyYXRv
cj46OnR5cGUgZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpIGNvbnN0Owot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p
ZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD46OnR5cGUgY29udGFpbnModHlwZW5hbWUgR2V0
UHRySGVscGVyPEs+OjpQdHJUeXBlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0g
S2V5VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1h
cHBlZFBlZWtUeXBlPjo6dHlwZSBpbmxpbmVHZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQ
dHJUeXBlKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1hcHBlZFBlZWtUeXBlPjo6
dHlwZSBnZXQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKSBjb25zdDsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNT
bWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxw
ZXI8Sz46OlB0clR5cGUpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiB0eXBl
bmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkVGFrZVR5cGU+
Ojp0eXBlIHRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gc3RkOjplbmFibGVfaWZfdDxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgaXRlcmF0b3I+IGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBl
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gc3RkOjplbmFibGVfaWZfdDxJ
c1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+IGZpbmQodHlwZW5hbWUgR2V0UHRy
SGVscGVyPEs+OjpQdHJUeXBlKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5
VHlwZT4gc3RkOjplbmFibGVfaWZfdDxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD4gY29udGFp
bnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gc3RkOjplbmFibGVfaWZfdDxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgTWFwcGVkUGVla1R5cGU+IGlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiBzdGQ6
OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT4gZ2V0KHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSyA9IEtleVR5cGU+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxLPjo6dmFsdWUs
IGJvb2w+IHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEsgPSBLZXlUeXBlPiBzdGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8
Sz46OnZhbHVlLCBNYXBwZWRUYWtlVHlwZT4gdGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUpOwogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkgY29uc3Q7CiAKQEAgLTQ3
MywyOCArNDczLDI4IEBAIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjoK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KIHRlbXBsYXRlPHR5cGVuYW1lIEs+Ci1pbmxpbmUgYXV0byBIYXNoTWFw
PFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBr
ZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVy
YXRvcj46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmZpbmQodHlw
ZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgLT4gc3RkOjplbmFibGVfaWZfdDxJ
c1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgaXRlcmF0b3I+CiB7CiAgICAgcmV0dXJuIG1faW1wbC50ZW1w
bGF0ZSBmaW5kPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaEZ1bmN0
aW9ucz4+KGtleSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5s
aW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxw
ZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1Nt
YXJ0UHRyPEs+Ojp2YWx1ZSwgY29uc3RfaXRlcmF0b3I+Ojp0eXBlCitpbmxpbmUgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIFg+OjpmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlw
ZSBrZXkpIGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGNv
bnN0X2l0ZXJhdG9yPgogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgZmluZDxIYXNoTWFw
VHJhbnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRvIEhhc2hNYXA8
VCwgVSwgViwgVywgWD46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlw
ZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZh
bHVlLCBib29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6Y29u
dGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlIGtleSkgY29uc3QgLT4gc3Rk
OjplbmFibGVfaWZfdDxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgYm9vbD4KIHsKICAgICByZXR1cm4g
bV9pbXBsLnRlbXBsYXRlIGNvbnRhaW5zPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRy
YWl0cywgSGFzaEZ1bmN0aW9ucz4+KGtleSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6aW5saW5lR2V0
KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5
cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlubGluZUdldCh0eXBlbmFt
ZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90
PElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT4KIHsKICAgICBLZXlWYWx1ZVBh
aXJUeXBlKiBlbnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlVHlwZSY+KG1faW1wbCkudGVtcGxh
dGUgaW5saW5lTG9va3VwPEhhc2hNYXBUcmFuc2xhdG9yPEtleVZhbHVlUGFpclRyYWl0cywgSGFz
aEZ1bmN0aW9ucz4+KGtleSk7CiAgICAgaWYgKCFlbnRyeSkKQEAgLTUwNCwyMSArNTA0LDIxIEBA
IGlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmlubGkKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4K
IHRlbXBsYXRlPHR5cGVuYW1lIEs+Ci1hdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmdldCh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBl
CithdXRvIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8
Sz46OlB0clR5cGUga2V5KSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Sz46
OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT4KIHsKICAgICByZXR1cm4gaW5saW5lR2V0KGtleSk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFcsIHR5cGVuYW1lIFg+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFzaE1h
cDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlw
ZSBrZXkpIC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBi
b29sPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSBrZXkpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8
SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+CiB7CiAgICAgcmV0dXJuIHJlbW92ZShmaW5kKGtl
eSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogdGVtcGxhdGU8dHlwZW5hbWUgSz4KLWlubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQ
dHJUeXBlIGtleSkgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFs
dWUsIE1hcHBlZFRha2VUeXBlPjo6dHlwZQoraW5saW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBX
LCBYPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSAtPiBzdGQ6
OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBwZWRUYWtlVHlwZT4KIHsKICAg
ICBpdGVyYXRvciBpdCA9IGZpbmQoa2V5KTsKICAgICBpZiAoaXQgPT0gZW5kKCkpCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSGFz
aFNldC5oCShyZXZpc2lvbiAyMjMzMDYpCisrKyBTb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDIxICszNCwyMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFy
ZywgdHlwZW5hbWUgSGFzCiBjbGFzcyBIYXNoU2V0IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoQXJnIEhhc2hGdW5jdGlvbnM7
Ci0gICAgdHlwZWRlZiBUcmFpdHNBcmcgVmFsdWVUcmFpdHM7Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBWYWx1ZVRyYWl0czo6VGFrZVR5cGUgVGFrZVR5cGU7CisgICAgdXNpbmcgSGFzaEZ1bmN0aW9u
cyA9IEhhc2hBcmc7CisgICAgdXNpbmcgVmFsdWVUcmFpdHMgPSBUcmFpdHNBcmc7CisgICAgdXNp
bmcgVGFrZVR5cGUgPSB0eXBlbmFtZSBWYWx1ZVRyYWl0czo6VGFrZVR5cGU7CiAKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFpdFR5cGUgVmFsdWVUeXBlOwor
ICAgIHVzaW5nIFZhbHVlVHlwZSA9IHR5cGVuYW1lIFZhbHVlVHJhaXRzOjpUcmFpdFR5cGU7CiAK
IHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoVGFibGU8VmFsdWVUeXBlLCBWYWx1ZVR5cGUsIElk
ZW50aXR5RXh0cmFjdG9yLAotICAgICAgICBIYXNoRnVuY3Rpb25zLCBWYWx1ZVRyYWl0cywgVmFs
dWVUcmFpdHM+IEhhc2hUYWJsZVR5cGU7CisgICAgdXNpbmcgSGFzaFRhYmxlVHlwZSA9IEhhc2hU
YWJsZTxWYWx1ZVR5cGUsIFZhbHVlVHlwZSwgSWRlbnRpdHlFeHRyYWN0b3IsIEhhc2hGdW5jdGlv
bnMsIFZhbHVlVHJhaXRzLCBWYWx1ZVRyYWl0cz47CiAKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhh
c2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4gaXRl
cmF0b3I7Ci0gICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFi
bGVUeXBlLCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUg
SGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0IEFkZFJlc3VsdDsKKyAgICB1c2luZyBpdGVyYXRvciA9
IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT47
CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cjxIYXNoVGFibGVUeXBlLCBWYWx1ZVR5cGU+OworICAgIHVzaW5nIEFkZFJlc3VsdD0gdHlwZW5h
bWUgSGFzaFRhYmxlVHlwZTo6QWRkUmVzdWx0OwogCiAgICAgSGFzaFNldCgpCiAgICAgewpAQCAt
MTEzLDEwICsxMTIsMTAgQEAgcHVibGljOgogICAgIFRha2VUeXBlIHRha2VBbnkoKTsKIAogICAg
IC8vIE92ZXJsb2FkcyBmb3Igc21hcnQgcG9pbnRlciB2YWx1ZXMgdGhhdCB0YWtlIHRoZSByYXcg
cG9pbnRlciB0eXBlIGFzIHRoZSBwYXJhbWV0ZXIuCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9
IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUs
IGl0ZXJhdG9yPjo6dHlwZSBmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkg
Y29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIGNvbnRhaW5zKHR5
cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgViA9IFZhbHVlVHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxW
Pjo6dmFsdWUsIGJvb2w+Ojp0eXBlIHJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0
clR5cGUpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYgPSBWYWx1ZVR5cGU+IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZhbHVlLCBUYWtlVHlwZT46OnR5cGUgdGFrZSh0
eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFYgPSBWYWx1ZVR5cGU+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGl0
ZXJhdG9yPiBmaW5kKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSkgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgViA9IFZhbHVlVHlwZT4gc3RkOjplbmFibGVfaWZfdDxJc1Nt
YXJ0UHRyPFY+Ojp2YWx1ZSwgYm9vbD4gY29udGFpbnModHlwZW5hbWUgR2V0UHRySGVscGVyPFY+
OjpQdHJUeXBlKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0gVmFsdWVUeXBlPiBz
dGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Vj46OnZhbHVlLCBib29sPiByZW1vdmUodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWID0g
VmFsdWVUeXBlPiBzdGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Vj46OnZhbHVlLCBUYWtlVHlw
ZT4gdGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUpOwogCiAgICAgc3RhdGlj
IGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFZhbHVlVHlwZSYpOwogCkBAIC0zMTEsMjggKzMxMCwy
OCBAQCBpbmxpbmUgYXV0byBIYXNoU2V0PFQsIFUsIFY+Ojp0YWtlQW55KCkgCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6ZmluZCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUg
dmFsdWUpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Vj46OnZh
bHVlLCBpdGVyYXRvcj46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5j
dGlvbnMsIFRyYWl0cz46OmZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZh
bHVlKSBjb25zdCAtPiBzdGQ6OmVuYWJsZV9pZl90PElzU21hcnRQdHI8Vj46OnZhbHVlLCBpdGVy
YXRvcj4KIHsKICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5zbGF0
b3I8VHJhaXRzLCBIYXNoRnVuY3Rpb25zPj4odmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogdGVtcGxh
dGU8dHlwZW5hbWUgVj4KLWlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cz46OmNvbnRhaW5zKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1
ZSkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUs
IGJvb2w+Ojp0eXBlCitpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBU
cmFpdHM+Ojpjb250YWlucyh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Vj46OlB0clR5cGUgdmFsdWUp
IGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+CiB7
CiAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxIYXNoU2V0VHJhbnNsYXRvcjxU
cmFpdHMsIEhhc2hGdW5jdGlvbnM+Pih2YWx1ZSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWPgotaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzPjo6cmVtb3ZlKHR5cGVuYW1lIEdldFB0ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4g
dHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxWPjo6dmFsdWUsIGJvb2w+Ojp0eXBl
CitpbmxpbmUgYXV0byBIYXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+OjpyZW1v
dmUodHlwZW5hbWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiBzdGQ6OmVuYWJs
ZV9pZl90PElzU21hcnRQdHI8Vj46OnZhbHVlLCBib29sPgogewogICAgIHJldHVybiByZW1vdmUo
ZmluZCh2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgSGFz
aEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzPgogdGVtcGxhdGU8dHlwZW5hbWUgVj4KLWlubGlu
ZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cz46OnRha2UodHlwZW5h
bWUgR2V0UHRySGVscGVyPFY+OjpQdHJUeXBlIHZhbHVlKSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZjxJc1NtYXJ0UHRyPFY+Ojp2YWx1ZSwgVGFrZVR5cGU+Ojp0eXBlCitpbmxpbmUgYXV0byBI
YXNoU2V0PFZhbHVlLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHM+Ojp0YWtlKHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxWPjo6UHRyVHlwZSB2YWx1ZSkgLT4gc3RkOjplbmFibGVfaWZfdDxJc1NtYXJ0UHRy
PFY+Ojp2YWx1ZSwgVGFrZVR5cGU+CiB7CiAgICAgcmV0dXJuIHRha2UoZmluZCh2YWx1ZSkpOwog
fQpJbmRleDogU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIGNsYXNzIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3IgOiBw
dWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWYWx1ZSwgc3Rk
OjpwdHJkaWZmX3QsIGNvbnN0IFZhbHVlKiwgY29uc3QgVmFsdWUmPiB7CiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+IGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIFZhbHVlIFZhbHVl
VHlwZTsKLSAgICAgICAgdHlwZWRlZiBjb25zdCBWYWx1ZVR5cGUmIFJlZmVyZW5jZVR5cGU7Ci0g
ICAgICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBQb2ludGVyVHlwZTsKKyAgICAgICAgdXNp
bmcgSGFzaFRhYmxlVHlwZSA9IEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hG
dW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgdXNpbmcgaXRlcmF0b3IgPSBI
YXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJh
aXRzLCBLZXlUcmFpdHM+OworICAgICAgICB1c2luZyBWYWx1ZVR5cGUgPSBWYWx1ZTsKKyAgICAg
ICAgdXNpbmcgUmVmZXJlbmNlVHlwZSA9IGNvbnN0IFZhbHVlVHlwZSY7CisgICAgICAgIHVzaW5n
IFBvaW50ZXJUeXBlID0gY29uc3QgVmFsdWVUeXBlKjsKIAogICAgICAgICBmcmllbmQgY2xhc3Mg
SGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBL
ZXlUcmFpdHM+OwogICAgICAgICBmcmllbmQgY2xhc3MgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBW
YWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz47CkBAIC0y
NDEsMTIgKzI0MSwxMiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
ZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5j
dGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgogICAgIGNsYXNzIEhh
c2hUYWJsZUl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8c3RkOjpmb3J3YXJkX2l0ZXJh
dG9yX3RhZywgVmFsdWUsIHN0ZDo6cHRyZGlmZl90LCBWYWx1ZSosIFZhbHVlJj4gewogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3Rvciwg
SGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IEhhc2hUYWJsZVR5cGU7Ci0gICAgICAg
IHR5cGVkZWYgSGFzaFRhYmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVu
Y3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz4gaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFz
aFRhYmxlQ29uc3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPiBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBWYWx1
ZSBWYWx1ZVR5cGU7Ci0gICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlJiBSZWZlcmVuY2VUeXBlOwot
ICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUG9pbnRlclR5cGU7CisgICAgICAgIHVzaW5nIEhh
c2hUYWJsZVR5cGUgPSBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rp
b25zLCBUcmFpdHMsIEtleVRyYWl0cz47CisgICAgICAgIHVzaW5nIGl0ZXJhdG9yID0gSGFzaFRh
YmxlSXRlcmF0b3I8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMs
IEtleVRyYWl0cz47CisgICAgICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gSGFzaFRhYmxlQ29u
c3RJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywg
S2V5VHJhaXRzPjsKKyAgICAgICAgdXNpbmcgVmFsdWVUeXBlID0gVmFsdWU7CisgICAgICAgIHVz
aW5nIFJlZmVyZW5jZVR5cGUgPSBWYWx1ZVR5cGUmOworICAgICAgICB1c2luZyBQb2ludGVyVHlw
ZSA9IFZhbHVlVHlwZSo7CiAKICAgICAgICAgZnJpZW5kIGNsYXNzIEhhc2hUYWJsZTxLZXksIFZh
bHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjsKIApAQCAt
MzAwLDEzICszMDAsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
S2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVu
Y3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KICAgICBjbGFzcyBI
YXNoVGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRv
cjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRz
PiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yPEtleSwg
VmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+IGNvbnN0
X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIFRyYWl0cyBWYWx1ZVRyYWl0czsKLSAgICAgICAg
dHlwZWRlZiBLZXkgS2V5VHlwZTsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZSBWYWx1ZVR5cGU7Ci0g
ICAgICAgIHR5cGVkZWYgSWRlbnRpdHlIYXNoVHJhbnNsYXRvcjxWYWx1ZVRyYWl0cywgSGFzaEZ1
bmN0aW9ucz4gSWRlbnRpdHlUcmFuc2xhdG9yVHlwZTsKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVBZGRSZXN1bHQ8aXRlcmF0b3I+IEFkZFJlc3VsdDsKKyAgICAgICAgdXNpbmcgaXRlcmF0b3Ig
PSBIYXNoVGFibGVJdGVyYXRvcjxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMs
IFRyYWl0cywgS2V5VHJhaXRzPjsKKyAgICAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBIYXNo
VGFibGVDb25zdEl0ZXJhdG9yPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OworICAgICAgICB1c2luZyBWYWx1ZVRyYWl0cyA9IFRyYWl0czsK
KyAgICAgICAgdXNpbmcgS2V5VHlwZSA9IEtleTsKKyAgICAgICAgdXNpbmcgVmFsdWVUeXBlID0g
VmFsdWU7CisgICAgICAgIHVzaW5nIElkZW50aXR5VHJhbnNsYXRvclR5cGUgPSBJZGVudGl0eUhh
c2hUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25zPjsKKyAgICAgICAgdXNpbmcg
QWRkUmVzdWx0ID0gSGFzaFRhYmxlQWRkUmVzdWx0PGl0ZXJhdG9yPjsKIAogI2lmIERVTVBfSEFT
SFRBQkxFX1NUQVRTX1BFUl9UQUJMRQogICAgICAgICBzdHJ1Y3QgU3RhdHMgewpAQCAtNDMzLDgg
KzQzMyw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGF0aWMgVmFsdWVUeXBlKiBhbGxv
Y2F0ZVRhYmxlKHVuc2lnbmVkIHNpemUpOwogICAgICAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRl
VGFibGUoVmFsdWVUeXBlKiB0YWJsZSwgdW5zaWduZWQgc2l6ZSk7CiAKLSAgICAgICAgdHlwZWRl
ZiBzdGQ6OnBhaXI8VmFsdWVUeXBlKiwgYm9vbD4gTG9va3VwVHlwZTsKLSAgICAgICAgdHlwZWRl
ZiBzdGQ6OnBhaXI8TG9va3VwVHlwZSwgdW5zaWduZWQ+IEZ1bGxMb29rdXBUeXBlOworICAgICAg
ICB1c2luZyBMb29rdXBUeXBlID0gc3RkOjpwYWlyPFZhbHVlVHlwZSosIGJvb2w+OworICAgICAg
ICB1c2luZyBGdWxsTG9va3VwVHlwZSA9IHN0ZDo6cGFpcjxMb29rdXBUeXBlLCB1bnNpZ25lZD47
CiAKICAgICAgICAgTG9va3VwVHlwZSBsb29rdXBGb3JXcml0aW5nKGNvbnN0IEtleSYga2V5KSB7
IHJldHVybiBsb29rdXBGb3JXcml0aW5nPElkZW50aXR5VHJhbnNsYXRvclR5cGU+KGtleSk7IH07
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBG
dWxsTG9va3VwVHlwZSBmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJik7CkBAIC01ODUsNyAr
NTg1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmICghSGFzaEZ1bmN0aW9uczo6c2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IEFTU0VSVCghSGFzaFRyYW5zbGF0b3I6OmVxdWFsKEtleVRyYWl0czo6ZW1wdHlWYWx1ZSgpLCBr
ZXkpKTsKLSAgICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFZhbHVl
VHlwZSksIHN0ZDo6YWxpZ25tZW50X29mPFZhbHVlVHlwZT46OnZhbHVlPjo6dHlwZSBkZWxldGVk
VmFsdWVCdWZmZXI7CisgICAgICAgIHN0ZDo6YWxpZ25lZF9zdG9yYWdlX3Q8c2l6ZW9mKFZhbHVl
VHlwZSksIHN0ZDo6YWxpZ25tZW50X29mPFZhbHVlVHlwZT46OnZhbHVlPiBkZWxldGVkVmFsdWVC
dWZmZXI7CiAgICAgICAgIFZhbHVlVHlwZSogZGVsZXRlZFZhbHVlUHRyID0gcmVpbnRlcnByZXRf
Y2FzdF9wdHI8VmFsdWVUeXBlKj4oJmRlbGV0ZWRWYWx1ZUJ1ZmZlcik7CiAgICAgICAgIFZhbHVl
VHlwZSYgZGVsZXRlZFZhbHVlID0gKmRlbGV0ZWRWYWx1ZVB0cjsKICAgICAgICAgVHJhaXRzOjpj
b25zdHJ1Y3REZWxldGVkVmFsdWUoZGVsZXRlZFZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L0hhc2hUcmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9IYXNoVHJhaXRzLmgJ
KHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0hhc2hUcmFpdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBT
aWduZWRXaXRoWmUKIAogLy8gQ2FuIGJlIHVzZWQgd2l0aCBzdHJvbmcgZW51bXMsIGFsbG93cyB6
ZXJvIGFzIGtleS4KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBTdHJvbmdFbnVtSGFzaFRy
YWl0cyA6IEdlbmVyaWNIYXNoVHJhaXRzPFQ+IHsKLSAgICB1c2luZyBVbmRlcmx5aW5nVHlwZSA9
IHR5cGVuYW1lIHN0ZDo6dW5kZXJseWluZ190eXBlPFQ+Ojp0eXBlOworICAgIHVzaW5nIFVuZGVy
bHlpbmdUeXBlID0gc3RkOjp1bmRlcmx5aW5nX3R5cGVfdDxUPjsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgc3RhdGljIFQgZW1wdHlWYWx1ZSgp
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8VW5kZXJseWluZ1R5
cGU+OjptYXgoKSk7IH0KICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYg
c2xvdCkgeyBzbG90ID0gc3RhdGljX2Nhc3Q8VD4oc3RkOjpudW1lcmljX2xpbWl0czxVbmRlcmx5
aW5nVHlwZT46Om1heCgpIC0gMSk7IH0KQEAgLTIyNCwxNSArMjI0LDEzIEBAIHN0cnVjdCBIYXNo
VHJhaXRIYXNDdXN0b21EZWxldGUgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVHJhaXRzLCB0
eXBlbmFtZSBUPgotdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SGFzaFRyYWl0SGFzQ3VzdG9tRGVs
ZXRlPFRyYWl0cywgVD46OnZhbHVlPjo6dHlwZQotaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldChUJiB2
YWx1ZSkKK2F1dG8gaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldChUJiB2YWx1ZSkgLT4gc3RkOjplbmFi
bGVfaWZfdDxIYXNoVHJhaXRIYXNDdXN0b21EZWxldGU8VHJhaXRzLCBUPjo6dmFsdWU+CiB7CiAg
ICAgVHJhaXRzOjpjdXN0b21EZWxldGVCdWNrZXQodmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUcmFpdHMsIHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhSGFzaFRy
YWl0SGFzQ3VzdG9tRGVsZXRlPFRyYWl0cywgVD46OnZhbHVlPjo6dHlwZQotaGFzaFRyYWl0c0Rl
bGV0ZUJ1Y2tldChUJiB2YWx1ZSkKK2F1dG8gaGFzaFRyYWl0c0RlbGV0ZUJ1Y2tldChUJiB2YWx1
ZSkgLT4gc3RkOjplbmFibGVfaWZfdDwhSGFzaFRyYWl0SGFzQ3VzdG9tRGVsZXRlPFRyYWl0cywg
VD46OnZhbHVlPgogewogICAgIHZhbHVlLn5UKCk7CiAgICAgVHJhaXRzOjpjb25zdHJ1Y3REZWxl
dGVkVmFsdWUodmFsdWUpOwpJbmRleDogU291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250
YWluZXJJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgYXV0byBvcGVyYXRvciooKSAtPiB0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxkZWNsdHlwZSgmQ29udGFpbmVyOjphdCkoY29uc3QgQ29udGFpbmVyLCB1bnNpZ25l
ZCk+Ojp0eXBlCisgICAgYXV0byBvcGVyYXRvciooKSAtPiBzdGQ6OnJlc3VsdF9vZl90PGRlY2x0
eXBlKCZDb250YWluZXI6OmF0KShjb25zdCBDb250YWluZXIsIHVuc2lnbmVkKT4KICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2NvbnRhaW5lci0+YXQobV9pbmRleCk7CiAgICAgfQpJbmRleDogU291
cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
d3RmL0l0ZXJhdG9yQWRhcHRvcnMuaAkocmV2aXNpb24gMjIzMzA2KQorKysgU291cmNlL1dURi93
dGYvSXRlcmF0b3JBZGFwdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGNvbnN0IHR5cGVuYW1l
IHN0ZDo6cmVtb3ZlX2NvbnN0PGRlY2x0eXBlKCpzdGQ6OmRlY2x2YWw8SXRlcmF0b3I+KCkpPjo6
dHlwZSBvcGVyYXRvciooKSBjb25zdAorICAgIGNvbnN0IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8ZGVj
bHR5cGUoKnN0ZDo6ZGVjbHZhbDxJdGVyYXRvcj4oKSk+IG9wZXJhdG9yKigpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQobV9pdGVyICE9IG1fZW5kKTsKICAgICAgICAgQVNTRVJUKG1fcHJl
ZCgqbV9pdGVyKSk7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIGNvbnN0IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PGRlY2x0
eXBlKHN0ZDo6ZGVjbHZhbDxUcmFuc2Zvcm0+KCkoKnN0ZDo6ZGVjbHZhbDxJdGVyYXRvcj4oKSkp
Pjo6dHlwZSBvcGVyYXRvciooKSBjb25zdAorICAgIGNvbnN0IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFRyYW5zZm9ybT4oKSgqc3RkOjpkZWNsdmFsPEl0ZXJhdG9y
PigpKSk+IG9wZXJhdG9yKigpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV90cmFuc2Zv
cm0oKm1faXRlcik7CiAgICAgfQpJbmRleDogU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgJKHJldmlzaW9uIDIy
MzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0tleVZhbHVlUGFpci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Nyw5ICs1Nyw5IEBAIHN0cnVjdCBLZXlWYWx1ZVBhaXIgewogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgSywgdHlwZW5hbWUgVj4KLWlubGluZSBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgc3RkOjpk
ZWNheTxLPjo6dHlwZSwgdHlwZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4gbWFrZUtleVZhbHVl
UGFpcihLJiYga2V5LCBWJiYgdmFsdWUpCitpbmxpbmUgS2V5VmFsdWVQYWlyPHN0ZDo6ZGVjYXlf
dDxLPiwgc3RkOjpkZWNheV90PFY+PiBtYWtlS2V5VmFsdWVQYWlyKEsmJiBrZXksIFYmJiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gS2V5VmFsdWVQYWlyPHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Sz46OnR5
cGUsIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Vj46OnR5cGU+IHsgc3RkOjpmb3J3YXJkPEs+KGtleSks
IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkgfTsKKyAgICByZXR1cm4gS2V5VmFsdWVQYWlyPHN0ZDo6
ZGVjYXlfdDxLPiwgc3RkOjpkZWNheV90PFY+PiB7IHN0ZDo6Zm9yd2FyZDxLPihrZXkpLCBzdGQ6
OmZvcndhcmQ8Vj4odmFsdWUpIH07CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0xFQkRl
Y29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MRUJEZWNvZGVyLmgJKHJldmlz
aW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0xFQkRlY29kZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNzksNyArNzksNyBAQCBpbmxpbmUgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZGVjb2Rl
SW50CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdXNpbmcgVW5zaWdu
ZWRUID0gdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlOworICAgIHVzaW5nIFVu
c2lnbmVkVCA9IHN0ZDo6bWFrZV91bnNpZ25lZF90PFQ+OwogICAgIGlmIChzaGlmdCA8IG51bUJp
dHMgJiYgKGJ5dGUgJiAweDQwKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8VD4oc3Rh
dGljX2Nhc3Q8VW5zaWduZWRUPihyZXN1bHQpIHwgKHN0YXRpY19jYXN0PFVuc2lnbmVkVD4oLTEp
IDw8IHNoaWZ0KSk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9MaXN0
SGFzaFNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgJKHJl
dmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDI1ICs0OCwyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1
Y3QgTGlzdEhhCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFyZyA9
IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhhc2hTZXQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKLSAgICB0eXBlZGVmIExp
c3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKKyAgICB1c2luZyBOb2RlID0gTGlzdEhhc2hT
ZXROb2RlPFZhbHVlQXJnPjsKIAotICAgIHR5cGVkZWYgSGFzaFRyYWl0czxOb2RlKj4gTm9kZVRy
YWl0czsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM8SGFzaEFyZz4g
Tm9kZUhhc2g7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldFRyYW5zbGF0b3I8SGFzaEFyZz4gQmFz
ZVRyYW5zbGF0b3I7CisgICAgdXNpbmcgTm9kZVRyYWl0cyA9IEhhc2hUcmFpdHM8Tm9kZSo+Owor
ICAgIHVzaW5nIE5vZGVIYXNoID0gTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczxIYXNoQXJn
PjsKKyAgICB1c2luZyBCYXNlVHJhbnNsYXRvciA9IExpc3RIYXNoU2V0VHJhbnNsYXRvcjxIYXNo
QXJnPjsKIAotICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNoRnVuY3Rpb25zOworICAgIHVzaW5nIEhh
c2hGdW5jdGlvbnMgPSBIYXNoQXJnOwogCiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBWYWx1ZUFyZyBW
YWx1ZVR5cGU7CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVmFsdWVBcmc7CiAKLSAgICB0eXBlZGVm
IExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVUeXBlLCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0
eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGNvbnN0
X2l0ZXJhdG9yOworICAgIHVzaW5nIGl0ZXJhdG9yID0gTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1
ZVR5cGUsIEhhc2hBcmc+OworICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz47CiAgICAgZnJpZW5kIGNsYXNzIExpc3RI
YXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+OwogCi0gICAgdHlwZWRlZiBz
dGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlw
ZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3I7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVy
YXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6
cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CiAKLSAgICB0eXBlZGVmIEhhc2hUYWJs
ZUFkZFJlc3VsdDxpdGVyYXRvcj4gQWRkUmVzdWx0OworICAgIHVzaW5nIEFkZFJlc3VsdCA9IEhh
c2hUYWJsZUFkZFJlc3VsdDxpdGVyYXRvcj47CiAKICAgICBMaXN0SGFzaFNldCgpID0gZGVmYXVs
dDsKICAgICBMaXN0SGFzaFNldChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VmFsdWVUeXBlPik7CkBA
IC0xNzcsMjIgKzE3NywyMiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlz
dEhhCiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFz
cyBMaXN0SGFzaFNldEl0ZXJhdG9yIHsKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNl
dDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBM
aXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9y
OwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBOb2RlOwotICAgIHR5cGVk
ZWYgVmFsdWVBcmcgVmFsdWVUeXBlOworICAgIHVzaW5nIExpc3RIYXNoU2V0VHlwZSA9IExpc3RI
YXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICB1c2luZyBpdGVyYXRvciA9IExpc3RIYXNo
U2V0SXRlcmF0b3I8VmFsdWVBcmcsIEhhc2hBcmc+OworICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9y
ID0gTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPjsKKyAgICB1c2lu
ZyBOb2RlID0gTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPjsKKyAgICB1c2luZyBWYWx1ZVR5cGUg
PSBWYWx1ZUFyZzsKIAogICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFz
aEFyZz47CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNoU2V0VHlwZSog
c2V0LCBOb2RlKiBwb3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9zaXRpb24pIHsgfQogCiBw
dWJsaWM6Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVk
ZWYgVmFsdWVUeXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBWYWx1ZVR5cGUqIHBvaW50ZXI7
Ci0gICAgdHlwZWRlZiBWYWx1ZVR5cGUmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHN0ZDo6Ymlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CisgICAgdXNpbmcgZGlm
ZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBWYWx1ZVR5
cGU7CisgICAgdXNpbmcgcG9pbnRlciA9IFZhbHVlVHlwZSo7CisgICAgdXNpbmcgcmVmZXJlbmNl
ID0gVmFsdWVUeXBlJjsKKyAgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJl
Y3Rpb25hbF9pdGVyYXRvcl90YWc7CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKCkgeyB9CiAK
QEAgLTIyNCwxMSArMjI0LDExIEBAIHByaXZhdGU6CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZhbHVl
QXJnLCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3Igewog
cHJpdmF0ZToKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPiBMaXN0
SGFzaFNldFR5cGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBI
YXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxW
YWx1ZUFyZywgSGFzaEFyZz4gY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNl
dE5vZGU8VmFsdWVBcmc+IE5vZGU7Ci0gICAgdHlwZWRlZiBWYWx1ZUFyZyBWYWx1ZVR5cGU7Cisg
ICAgdXNpbmcgTGlzdEhhc2hTZXRUeXBlID0gTGlzdEhhc2hTZXQ8VmFsdWVBcmcsIEhhc2hBcmc+
OworICAgIHVzaW5nIGl0ZXJhdG9yID0gTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFz
aEFyZz47CisgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBMaXN0SGFzaFNldENvbnN0SXRlcmF0
b3I8VmFsdWVBcmcsIEhhc2hBcmc+OworICAgIHVzaW5nIE5vZGUgPSBMaXN0SGFzaFNldE5vZGU8
VmFsdWVBcmc+OworICAgIHVzaW5nIFZhbHVlVHlwZSA9IFZhbHVlQXJnOwogCiAgICAgZnJpZW5k
IGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBIYXNoQXJnPjsKICAgICBmcmllbmQgY2xhc3Mg
TGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFyZz47CkBAIC0yNDAsMTEgKzI0MCwx
MSBAQCBwcml2YXRlOgogICAgIH0KIAogcHVibGljOgotICAgIHR5cGVkZWYgcHRyZGlmZl90IGRp
ZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IFZhbHVlVHlwZSB2YWx1ZV90eXBlOwot
ICAgIHR5cGVkZWYgY29uc3QgVmFsdWVUeXBlKiBwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3Qg
VmFsdWVUeXBlJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OworICAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9
IHB0cmRpZmZfdDsKKyAgICB1c2luZyB2YWx1ZV90eXBlID0gY29uc3QgVmFsdWVUeXBlOworICAg
IHVzaW5nIHBvaW50ZXIgPSBjb25zdCBWYWx1ZVR5cGUqOworICAgIHVzaW5nIHJlZmVyZW5jZSA9
IGNvbnN0IFZhbHVlVHlwZSY7CisgICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmJp
ZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOwogCiAgICAgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9y
KCkKICAgICB7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCShyZXZpc2lvbiAyMjMzMDYpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBoYXNUd29PCiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgdW5zaWduZWQgZ2V0TFNCU2V0KFQgdmFsdWUpCiB7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8VD46OnR5cGUgVW5zaWduZWRUOworICAg
IHR5cGVkZWYgc3RkOjptYWtlX3Vuc2lnbmVkX3Q8VD4gVW5zaWduZWRUOwogICAgIHVuc2lnbmVk
IHJlc3VsdCA9IDA7CiAKICAgICBVbnNpZ25lZFQgdW5zaWduZWRWYWx1ZSA9IHN0YXRpY19jYXN0
PFVuc2lnbmVkVD4odmFsdWUpOwpAQCAtMzczLDcgKzM3Myw3IEBAIGlubGluZSB1bnNpZ25lZCBm
YXN0TG9nMih1aW50NjRfdCB2YWx1ZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFs
dWUsIFQ+Ojp0eXBlIHNhZmVGUERpdmlzaW9uKFQgdSwgVCB2KQoraW5saW5lIHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19mbG9hdGluZ19wb2ludDxUPjo6dmFsdWUsIFQ+IHNhZmVGUERpdmlzaW9u
KFQgdSwgVCB2KQogewogICAgIC8vIFByb3RlY3QgYWdhaW5zdCBvdmVyZmxvdyAvIHVuZGVyZmxv
dy4KICAgICBpZiAodiA8IDEgJiYgdSA+IHYgKiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgo
KSkKQEAgLTM5MCw3ICszOTAsNyBAQCBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3Rk
Ojppc19mCiAvLyAgICAgQm9zdG9uOiBBZGRpc29uLVdlc2xleSwgMTk5OC4gMjI5LTQ1LgogLy8g
WzJdIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2RvYy9saWJzLzFfMzRfMC9saWJzL3Rlc3QvZG9jL2Nv
bXBvbmVudHMvdGVzdF90b29scy9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmh0bWwKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBib29sPjo6dHlwZSBhcmVFc3NlbnRpYWxseUVxdWFs
KFQgdSwgVCB2LCBUIGVwc2lsb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjplcHNpbG9uKCkp
CitpbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1
ZSwgYm9vbD4gYXJlRXNzZW50aWFsbHlFcXVhbChUIHUsIFQgdiwgVCBlcHNpbG9uID0gc3RkOjpu
dW1lcmljX2xpbWl0czxUPjo6ZXBzaWxvbigpKQogewogICAgIGlmICh1ID09IHYpCiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtNDAxLDE0ICs0MDEsMTQgQEAgaW5saW5lIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPHN0ZDo6aXNfZgogCiAvLyBNYXRjaCBiZWhhdmlvciBvZiBNYXRoLm1pbiwgd2hl
cmUgTmFOIGlzIHJldHVybmVkIGlmIGVpdGhlciBhcmd1bWVudCBpcyBOYU4uCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLWlubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0
aW5nX3BvaW50PFQ+Ojp2YWx1ZSwgVD46OnR5cGUgbmFuUHJvcGFnYXRpbmdNaW4oVCBhLCBUIGIp
CitpbmxpbmUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1
ZSwgVD4gbmFuUHJvcGFnYXRpbmdNaW4oVCBhLCBUIGIpCiB7CiAgICAgcmV0dXJuIHN0ZDo6aXNu
YW4oYSkgfHwgc3RkOjppc25hbihiKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OnF1aWV0X05h
TigpIDogc3RkOjptaW4oYSwgYik7CiB9CiAKIC8vIE1hdGNoIGJlaGF2aW9yIG9mIE1hdGgubWF4
LCB3aGVyZSBOYU4gaXMgcmV0dXJuZWQgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIE5hTi4KIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
ZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlLCBUPjo6dHlwZSBuYW5Qcm9wYWdhdGluZ01heChUIGEs
IFQgYikKK2lubGluZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46
OnZhbHVlLCBUPiBuYW5Qcm9wYWdhdGluZ01heChUIGEsIFQgYikKIHsKICAgICByZXR1cm4gc3Rk
Ojppc25hbihhKSB8fCBzdGQ6OmlzbmFuKGIpID8gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cXVp
ZXRfTmFOKCkgOiBzdGQ6Om1heChhLCBiKTsKIH0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL05ldmVy
RGVzdHJveWVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQu
aAkocmV2aXNpb24gMjIzMzA2KQorKysgU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjIsMTMgKzYyLDEzIEBAIHB1YmxpYzoKICAgICBjb25zdCBUJiBn
ZXQoKSBjb25zdCB7IHJldHVybiAqc3RvcmFnZVBvaW50ZXIoKTsgfQogCiBwcml2YXRlOgotICAg
IHVzaW5nIFBvaW50ZXJUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUq
OworICAgIHVzaW5nIFBvaW50ZXJUeXBlID0gc3RkOjpyZW1vdmVfY29uc3RfdDxUPio7CiAKICAg
ICBQb2ludGVyVHlwZSBzdG9yYWdlUG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
UG9pbnRlclR5cGU+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KCZtX3N0b3JhZ2UpKTsgfQog
CiAgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIGFsbG9jYXRlIGEg
aHVuayBvZiB2aXJ0dWFsIG1lbW9yeQogICAgIC8vIGFuZCBoYW5kIG91dCBjaHVua3Mgb2YgaXQg
dG8gTmV2ZXJEZXN0cm95ZWQgaW5zdGVhZCwgdG8gcmVkdWNlIGZyYWdtZW50YXRpb24uCi0gICAg
dHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9v
ZjxUPjo6dmFsdWU+Ojp0eXBlIG1fc3RvcmFnZTsKKyAgICBzdGQ6OmFsaWduZWRfc3RvcmFnZV90
PHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPiBtX3N0b3JhZ2U7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlLCBib29sIFNob3VsZFJlbGF4ID0gc3RkOjppc19i
YXNlX29mPFJlZkNvdW50ZWRCYXNlLCBQdHJUeXBlPjo6dmFsdWU+IHN0cnVjdCBNYXliZVJlbGF4
IHsKICAgICAgICAgZXhwbGljaXQgTWF5YmVSZWxheChQdHJUeXBlKikgeyB9CkBAIC0xMTYsNyAr
MTE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdXNpbmcgUG9pbnRlclR5
cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUPjo6dHlwZSo7CisgICAgdXNpbmcgUG9p
bnRlclR5cGUgPSBzdGQ6OnJlbW92ZV9jb25zdF90PFQ+KjsKIAogICAgIFBvaW50ZXJUeXBlIHN0
b3JhZ2VQb2ludGVyKCkgY29uc3QKICAgICB7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSB3aGV0aGVyIHdlIHNob3VsZCBhbGxvY2F0ZSBh
IGh1bmsgb2YgdmlydHVhbCBtZW1vcnkKICAgICAvLyBhbmQgaGFuZCBvdXQgY2h1bmtzIG9mIGl0
IHRvIE5ldmVyRGVzdHJveWVkIGluc3RlYWQsIHRvIHJlZHVjZSBmcmFnbWVudGF0aW9uLgotICAg
IHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRf
b2Y8VD46OnZhbHVlPjo6dHlwZSBtX3N0b3JhZ2U7CisgICAgc3RkOjphbGlnbmVkX3N0b3JhZ2Vf
dDxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT4gbV9zdG9yYWdlOwogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSwgYm9vbCBTaG91bGRSZWxheCA9IHN0ZDo6aXNf
YmFzZV9vZjxSZWZDb3VudGVkQmFzZSwgUHRyVHlwZT46OnZhbHVlPiBzdHJ1Y3QgTWF5YmVSZWxh
eCB7CiAgICAgICAgIGV4cGxpY2l0IE1heWJlUmVsYXgoUHRyVHlwZSopIHsgfQpJbmRleDogU291
cmNlL1dURi93dGYvT3B0aW9uU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvT3B0
aW9uU2V0LmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXVEYgewogLy8gZW51
bWVyYXRvcnMgYXJvdW5kLgogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgT3B0aW9uU2V0IHsK
ICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZW51bTxUPjo6dmFsdWUsICJUIGlzIG5vdCBhbiBl
bnVtIHR5cGUiKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDx0eXBl
bmFtZSBzdGQ6OnVuZGVybHlpbmdfdHlwZTxUPjo6dHlwZT46OnR5cGUgU3RvcmFnZVR5cGU7Cisg
ICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBzdGQ6Om1ha2VfdW5zaWduZWRfdDxzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PFQ+PjsKIAogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VU
eXBlPiBjbGFzcyBJdGVyYXRvciB7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaAkocmV2aXNpb24gMjIzMzA2
KQorKysgU291cmNlL1dURi93dGYvUmV0YWluUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcg
KzU3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUmV0YWluUHRyPFQ+IGFkb3B0TgogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZXRhaW5QdHIgewogcHVibGljOgotICAgIHR5cGVkZWYg
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZSBWYWx1ZVR5cGU7CisgICAgdHlw
ZWRlZiBzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8VD4gVmFsdWVUeXBlOwogICAgIHR5cGVkZWYgVmFs
dWVUeXBlKiBQdHJUeXBlOwogICAgIHR5cGVkZWYgQ0ZUeXBlUmVmIFN0b3JhZ2VUeXBlOwogCkBA
IC0xMTMsMTUgKzExMywxMyBAQCBwcml2YXRlOgogCiAjaWYgZGVmaW5lZCAoX19PQkpDX18pICYm
IF9faGFzX2ZlYXR1cmUob2JqY19hcmMpCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICB0
eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxlPFUsIGlkPjo6dmFsdWUs
IFB0clR5cGU+Ojp0eXBlCi0gICAgZnJvbVN0b3JhZ2VUeXBlSGVscGVyKFN0b3JhZ2VUeXBlIHB0
cikgY29uc3QKKyAgICBhdXRvIGZyb21TdG9yYWdlVHlwZUhlbHBlcihTdG9yYWdlVHlwZSBwdHIp
IGNvbnN0IC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19jb252ZXJ0aWJsZTxVLCBpZD46OnZh
bHVlLCBQdHJUeXBlPgogICAgIHsKICAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBQdHJUeXBlKXB0
cjsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgIHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPCFzdGQ6OmlzX2NvbnZlcnRpYmxlPFUsIGlkPjo6dmFsdWUsIFB0clR5cGU+Ojp0
eXBlCi0gICAgZnJvbVN0b3JhZ2VUeXBlSGVscGVyKFN0b3JhZ2VUeXBlIHB0cikgY29uc3QKKyAg
ICBhdXRvIGZyb21TdG9yYWdlVHlwZUhlbHBlcihTdG9yYWdlVHlwZSBwdHIpIGNvbnN0IC0+IHN0
ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfY29udmVydGlibGU8VSwgaWQ+Ojp2YWx1ZSwgUHRyVHlw
ZT4KICAgICB7CiAgICAgICAgIHJldHVybiAoUHRyVHlwZSlwdHI7CiAgICAgfQpJbmRleDogU291
cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
U2l6ZUxpbWl0cy5jcHAJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL1NpemVM
aW1pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHN0cnVjdCBTYW1lU2l6
ZUFzVmVjdG9yV2l0aElubGluZUNhcGFjaXQKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5Pgogc3RydWN0IFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNp
dHkgewogICAgIFNhbWVTaXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8VCwgMD4gYmFzZUNh
cGFjaXR5OwotICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9yYWdlPHNpemVvZihUKSwgc3Rk
OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBpbmxpbmVCdWZmZXJbaW5saW5lQ2FwYWNp
dHldOworICAgIHN0ZDo6YWxpZ25lZF9zdG9yYWdlX3Q8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVu
dF9vZjxUPjo6dmFsdWU+IGlubGluZUJ1ZmZlcltpbmxpbmVDYXBhY2l0eV07CiB9OwogCiBzdGF0
aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JX
aXRoSW5saW5lQ2FwYWNpdHk8aW50PiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAkocmV2aXNpb24gMjIzMzA2KQorKysgU291cmNlL1dURi93
dGYvU3RkTGliRXh0cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBpbmxp
bmUgVG9UeXBlIGJpdHdpc2VfY2FzdChGcm9tVHlwZSBmcm9tCiAgICAgc3RhdGljX2Fzc2VydChf
X2lzX3RyaXZpYWxseV9jb3B5YWJsZShUb1R5cGUpLCAiYml0d2lzZV9jYXN0IG9mIG5vbi10cml2
aWFsbHktY29weWFibGUgdHlwZSEiKTsKICAgICBzdGF0aWNfYXNzZXJ0KF9faXNfdHJpdmlhbGx5
X2NvcHlhYmxlKEZyb21UeXBlKSwgImJpdHdpc2VfY2FzdCBvZiBub24tdHJpdmlhbGx5LWNvcHlh
YmxlIHR5cGUhIik7CiAjZW5kaWYKLSAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxUb1R5
cGU+Ojp0eXBlIHRvIHsgfTsKKyAgICBzdGQ6OnJlbW92ZV9jb25zdF90PFRvVHlwZT4gdG8geyB9
OwogICAgIHN0ZDo6bWVtY3B5KCZ0bywgJmZyb20sIHNpemVvZih0bykpOwogICAgIHJldHVybiB0
bzsKIH0KQEAgLTQwMiw3ICs0MDIsNyBAQCBuYW1lc3BhY2UgRGV0YWlsCiAgICAgICAgIHN0YXRp
YyBzdGQ6OnRydWVfdHlwZSB0ZXN0KEJhc2U8QXJncy4uLj4qKTsKICAgICAgICAgc3RhdGljIHN0
ZDo6ZmFsc2VfdHlwZSB0ZXN0KHZvaWQqKTsKIAotICAgICAgICBzdGF0aWMgY29uc3RleHByIGNv
bnN0IGJvb2wgdmFsdWUgPSBkZWNsdHlwZSh0ZXN0KHN0ZDo6ZGVjbHZhbDx0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9jdjxEZXJpdmVkPjo6dHlwZSo+KCkpKTo6dmFsdWU7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgY29uc3QgYm9vbCB2YWx1ZSA9IGRlY2x0eXBlKHRlc3Qoc3RkOjpkZWNsdmFsPHN0
ZDo6cmVtb3ZlX2N2X3Q8RGVyaXZlZD4qPigpKSk6OnZhbHVlOwogICAgIH07CiB9CiAKQEAgLTQx
MSw3ICs0MTEsNyBAQCBzdHJ1Y3QgSXNCYXNlT2ZUZW1wbGF0ZSA6IHB1YmxpYyBzdGQ6OmluCiAK
IHRlbXBsYXRlIDxjbGFzcyBUPgogc3RydWN0IFJlbW92ZUNWQW5kUmVmZXJlbmNlICB7Ci0gICAg
dHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZl
cmVuY2U8VD46OnR5cGU+Ojp0eXBlIHR5cGU7CisgICAgdHlwZWRlZiBzdGQ6OnJlbW92ZV9jdl90
PHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PFQ+PiB0eXBlOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgSXRlcmF0b3JUeXBlTGVmdCwgdHlwZW5hbWUgSXRlcmF0b3JUeXBlUmlnaHQsIHR5cGVuYW1l
IEl0ZXJhdG9yVHlwZURzdD4KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBtYWtlX3VuaXF1ZShBcmdzJiYu
Li4gYXJncykKIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSBfVW5pcXVlX2lmPFQ+
OjpfVW5rbm93bl9ib3VuZAogbWFrZV91bmlxdWUoc2l6ZV90IG4pCiB7Ci0gICAgdHlwZWRlZiB0
eXBlbmFtZSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlIFU7CisgICAgdHlwZWRlZiByZW1vdmVfZXh0
ZW50X3Q8VD4gVTsKICAgICByZXR1cm4gdW5pcXVlX3B0cjxUPihuZXcgVVtuXSgpKTsKIH0KIApA
QCAtNTA2LDExICs1MDYsMTEgQEAgVCBleGNoYW5nZShUJiB0LCBVJiYgbmV3VmFsdWUpCiAjZW5k
aWYKIAogdGVtcGxhdGU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXJUYWcsIHR5cGVuYW1lIFQ+Ci1B
TFdBWVNfSU5MSU5FIGNvbnN0ZXhwciB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBl
JiYgbW92ZShUJiYgdmFsdWUpCitBTFdBWVNfSU5MSU5FIGNvbnN0ZXhwciByZW1vdmVfcmVmZXJl
bmNlX3Q8VD4mJiBtb3ZlKFQmJiB2YWx1ZSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KGlzX2x2YWx1
ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCAiVCBpcyBub3QgYW4gbHZhbHVlIHJlZmVyZW5jZTsgbW92
ZSgpIGlzIHVubmVjZXNzYXJ5LiIpOwogCi0gICAgdXNpbmcgTm9uUmVmUXVhbGlmaWVkVHlwZSA9
IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU7CisgICAgdXNpbmcgTm9uUmVmUXVh
bGlmaWVkVHlwZSA9IHJlbW92ZV9yZWZlcmVuY2VfdDxUPjsKICAgICBzdGF0aWNfYXNzZXJ0KCFp
c19jb25zdDxOb25SZWZRdWFsaWZpZWRUeXBlPjo6dmFsdWUsICJUIGlzIGNvbnN0IHF1YWxpZmll
ZC4iKTsKIAogICAgIHJldHVybiBtb3ZlKGZvcndhcmQ8VD4odmFsdWUpKTsKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1N5c3RlbUZyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9TeXN0
ZW1GcmVlLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYvd3RmL1N5c3RlbUZyZWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
c3RydWN0IFN5c3RlbUZyZWUgewogICAgIHZvaWQgb3BlcmF0b3IoKShUKiBwb2ludGVyKSBjb25z
dAogICAgIHsKLSAgICAgICAgZnJlZShjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2
PFQ+Ojp0eXBlKj4ocG9pbnRlcikpOworICAgICAgICBmcmVlKGNvbnN0X2Nhc3Q8c3RkOjpyZW1v
dmVfY3ZfdDxUPio+KHBvaW50ZXIpKTsKICAgICB9CiB9OwogCkBAIC00MSw3ICs0MSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgU3lzdGVtRnJlZTxUW10+IHsKICAgICB2b2lkIG9w
ZXJhdG9yKCkoVCogcG9pbnRlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGZyZWUoY29uc3RfY2Fz
dDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jdjxUPjo6dHlwZSo+KHBvaW50ZXIpKTsKKyAgICAgICAg
ZnJlZShjb25zdF9jYXN0PHN0ZDo6cmVtb3ZlX2N2X3Q8VD4qPihwb2ludGVyKSk7CiAgICAgfQog
CiB9OwpJbmRleDogU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCShyZXZpc2lvbiAyMjMzMDYpCisrKyBT
b3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGEpOwogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6Ci0gICAgICAgIHVzaW5n
IFBvaW50ZXJUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8VD46OnR5cGUqOworICAg
ICAgICB1c2luZyBQb2ludGVyVHlwZSA9IHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8VD4qOwogCiAgICAg
ICAgIERhdGEoVGhyZWFkU3BlY2lmaWM8VCwgY2FuQmVHQ1RocmVhZD4qIG93bmVyKQogICAgICAg
ICAgICAgOiBvd25lcihvd25lcikKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAgICAg
ICAgIFBvaW50ZXJUeXBlIHN0b3JhZ2VQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxQb2ludGVyVHlwZT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oJm1fc3RvcmFnZSkpOyB9
CiAKLSAgICAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6
OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1fc3RvcmFnZTsKKyAgICAgICAgc3RkOjph
bGlnbmVkX3N0b3JhZ2VfdDxzaXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT4g
bV9zdG9yYWdlOwogICAgICAgICBUaHJlYWRTcGVjaWZpYzxULCBjYW5CZUdDVGhyZWFkPiogb3du
ZXI7CiAgICAgfTsKIApJbmRleDogU291cmNlL1dURi93dGYvVHlwZUNhc3RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvVHlwZUNhc3RzLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNv
dXJjZS9XVEYvd3RmL1R5cGVDYXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwyNSArNjksMjcg
QEAgaW5saW5lIGJvb2wgaXMoQXJnVHlwZSogc291cmNlKQogLy8gVXBkYXRlIFQncyBjb25zdG5l
c3MgdG8gbWF0Y2ggUmVmZXJlbmNlJ3MuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVmZXJlbmNlLCB0
eXBlbmFtZSBUPgogc3RydWN0IG1hdGNoX2NvbnN0bmVzcyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8UmVmZXJlbmNlPjo6dmFsdWUsIHR5cGVu
YW1lIHN0ZDo6YWRkX2NvbnN0PFQ+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDxU
Pjo6dHlwZT46OnR5cGUgdHlwZTsKKyAgICB0eXBlZGVmIHN0ZDo6Y29uZGl0aW9uYWxfdDxzdGQ6
OmlzX2NvbnN0PFJlZmVyZW5jZT46OnZhbHVlLCBzdGQ6OmFkZF9jb25zdF90PFQ+LCBzdGQ6OnJl
bW92ZV9jb25zdF90PFQ+PiB0eXBlOwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFJlZmVyZW5j
ZSwgdHlwZW5hbWUgVD4gdXNpbmcgbWF0Y2hfY29uc3RuZXNzX3QgPSB0eXBlbmFtZSBtYXRjaF9j
b25zdG5lc3M8UmVmZXJlbmNlLCBUPjo6dHlwZTsKKwogLy8gU2FmZSBkb3duY2FzdGluZyBmdW5j
dGlvbnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KLWlubGlu
ZSB0eXBlbmFtZSBtYXRjaF9jb25zdG5lc3M8U291cmNlLCBUYXJnZXQ+Ojp0eXBlJiBkb3duY2Fz
dChTb3VyY2UmIHNvdXJjZSkKK2lubGluZSBtYXRjaF9jb25zdG5lc3NfdDxTb3VyY2UsIFRhcmdl
dD4mIGRvd25jYXN0KFNvdXJjZSYgc291cmNlKQogewogICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6
aXNfc2FtZTxTb3VyY2UsIFRhcmdldD46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCB0byBzYW1l
IHR5cGUiKTsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxTb3VyY2UsIFRhcmdl
dD46OnZhbHVlLCAiU2hvdWxkIGJlIGEgZG93bmNhc3QiKTsKICAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx0eXBlbmFtZSBtYXRjaF9jb25zdG5lc3M8U291cmNlLCBUYXJnZXQ+Ojp0eXBlJj4oc291
cmNlKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfY29uc3RuZXNzX3Q8U291cmNlLCBU
YXJnZXQ+Jj4oc291cmNlKTsKIH0KIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUg
U291cmNlPgotaW5saW5lIHR5cGVuYW1lIG1hdGNoX2NvbnN0bmVzczxTb3VyY2UsIFRhcmdldD46
OnR5cGUqIGRvd25jYXN0KFNvdXJjZSogc291cmNlKQoraW5saW5lIG1hdGNoX2NvbnN0bmVzc190
PFNvdXJjZSwgVGFyZ2V0PiogZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCiB7CiAgICAgc3RhdGlj
X2Fzc2VydCghc3RkOjppc19zYW1lPFNvdXJjZSwgVGFyZ2V0Pjo6dmFsdWUsICJVbm5lY2Vzc2Fy
eSBjYXN0IHRvIHNhbWUgdHlwZSIpOwogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19iYXNlX29m
PFNvdXJjZSwgVGFyZ2V0Pjo6dmFsdWUsICJTaG91bGQgYmUgYSBkb3duY2FzdCIpOwogICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291
cmNlKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIG1hdGNoX2NvbnN0bmVzczxT
b3VyY2UsIFRhcmdldD46OnR5cGUqPihzb3VyY2UpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxt
YXRjaF9jb25zdG5lc3NfdDxTb3VyY2UsIFRhcmdldD4qPihzb3VyY2UpOwogfQogCiAvLyBBZGQg
c3VwcG9ydCBmb3IgdHlwZSBjaGVja2luZyAvIGNhc3RpbmcgdXNpbmcgaXM8PigpIC8gZG93bmNh
c3Q8PigpIGhlbHBlcnMgZm9yIGEgc3BlY2lmaWMgY2xhc3MuCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAkocmV2aXNp
b24gMjIzMzA2KQorKysgU291cmNlL1dURi93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2Myw5ICs1NjMsOSBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBBZGQgYSByZWR6b25lIGJl
Zm9yZSB0aGUgYnVmZmVyIHRvIGNhdGNoIG9mZiBieSBvbmUgYWNjZXNzZXMuIFdlIGRvbid0IG5l
ZWQgYSBndWFyZCBhZnRlciwgYmVjYXVzZSB0aGUgYnVmZmVyIGlzIHRoZSBsYXN0IG1lbWJlciB2
YXJpYWJsZS4KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGFzYW5JbmxpbmVCdWZmZXJBbGlnbm1l
bnQgPSBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWUgPj0gOCA/IHN0ZDo6YWxpZ25tZW50X29m
PFQ+Ojp2YWx1ZSA6IDg7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBhc2FuQWRqdXN0ZWRJbmxp
bmVDYXBhY2l0eSA9ICgoc2l6ZW9mKFQpICogaW5saW5lQ2FwYWNpdHkgKyA3KSAmIH43KSAvIHNp
emVvZihUKTsKLSAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxzaXplb2YoVCksIGFz
YW5JbmxpbmVCdWZmZXJBbGlnbm1lbnQ+Ojp0eXBlIG1faW5saW5lQnVmZmVyW2FzYW5BZGp1c3Rl
ZElubGluZUNhcGFjaXR5XTsKKyAgICBzdGQ6OmFsaWduZWRfc3RvcmFnZV90PHNpemVvZihUKSwg
YXNhbklubGluZUJ1ZmZlckFsaWdubWVudD4gbV9pbmxpbmVCdWZmZXJbYXNhbkFkanVzdGVkSW5s
aW5lQ2FwYWNpdHldOwogI2Vsc2UKLSAgICB0eXBlbmFtZSBzdGQ6OmFsaWduZWRfc3RvcmFnZTxz
aXplb2YoVCksIHN0ZDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZT46OnR5cGUgbV9pbmxpbmVCdWZm
ZXJbaW5saW5lQ2FwYWNpdHldOworICAgIHN0ZDo6YWxpZ25lZF9zdG9yYWdlX3Q8c2l6ZW9mKFQp
LCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+IG1faW5saW5lQnVmZmVyW2lubGluZUNhcGFj
aXR5XTsKICNlbmRpZgogfTsKIApAQCAtNzk1LDcgKzc5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2hlY2tDb25zaXN0ZW5jeSgpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rp
b24sIHR5cGVuYW1lIFIgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBGdW5jdGlvbihjb25z
dCBUJik+Ojp0eXBlPiBWZWN0b3I8Uj4gbWFwKE1hcEZ1bmN0aW9uKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUgUiA9IHN0ZDo6cmVzdWx0X29mX3Q8
TWFwRnVuY3Rpb24oY29uc3QgVCYpPj4gVmVjdG9yPFI+IG1hcChNYXBGdW5jdGlvbikgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBleHBhbmRDYXBhY2l0eShzaXplX3QgbmV3TWluQ2FwYWNp
dHkpOwpAQCAtMTMwNSw3ICsxMzA1LDcgQEAgdm9pZCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SAogewogICAgIEFTU0VSVChzaXplKCkgPT0gY2FwYWNpdHkoKSk7CiAKLSAgICBh
dXRvIHB0ciA9IGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUg
c3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlPjo6dHlwZSo+KHN0ZDo6YWRkcmVzc29mKHZh
bHVlKSk7CisgICAgYXV0byBwdHIgPSBjb25zdF9jYXN0PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3Rk
OjpyZW1vdmVfcmVmZXJlbmNlX3Q8VT4+Kj4oc3RkOjphZGRyZXNzb2YodmFsdWUpKTsKICAgICBw
dHIgPSBleHBhbmRDYXBhY2l0eShzaXplKCkgKyAxLCBwdHIpOwogICAgIEFTU0VSVChiZWdpbigp
KTsKIApAQCAtMTM5MSw3ICsxMzkxLDcgQEAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdgogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBvc2l0
aW9uIDw9IHNpemUoKSk7CiAKLSAgICBhdXRvIHB0ciA9IGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlPjo6
dHlwZSo+KHN0ZDo6YWRkcmVzc29mKHZhbHVlKSk7CisgICAgYXV0byBwdHIgPSBjb25zdF9jYXN0
PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8VT4+Kj4oc3RkOjph
ZGRyZXNzb2YodmFsdWUpKTsKICAgICBpZiAoc2l6ZSgpID09IGNhcGFjaXR5KCkpIHsKICAgICAg
ICAgcHRyID0gZXhwYW5kQ2FwYWNpdHkoc2l6ZSgpICsgMSwgcHRyKTsKICAgICAgICAgQVNTRVJU
KGJlZ2luKCkpOwpAQCAtMTU5MSw3ICsxNTkxLDcgQEAgc2l6ZV90IHJlbW92ZVJlcGVhdGVkRWxl
bWVudHMoVmVjdG9yPFQsIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTb3VyY2VUeXBlPgogc3RydWN0
IENvbGxlY3Rpb25JbnNwZWN0b3IgewotICAgIHVzaW5nIFJlYWxTb3VyY2VUeXBlID0gdHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFNvdXJjZVR5cGU+Ojp0eXBlOworICAgIHVzaW5nIFJl
YWxTb3VyY2VUeXBlID0gc3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8U291cmNlVHlwZT47CiAgICAg
dXNpbmcgSXRlcmF0b3JUeXBlID0gZGVjbHR5cGUoc3RkOjpiZWdpbihzdGQ6OmRlY2x2YWw8UmVh
bFNvdXJjZVR5cGU+KCkpKTsKICAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIHN0
ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yVHlwZT46OnZhbHVlX3R5cGU7CiB9OwpAQCAtMTU5
OSw3ICsxNTk5LDcgQEAgc3RydWN0IENvbGxlY3Rpb25JbnNwZWN0b3IgewogdGVtcGxhdGU8dHlw
ZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIEVuYWJsZSA9
IHZvaWQ+CiBzdHJ1Y3QgTWFwcGVyIHsKICAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVu
YW1lIENvbGxlY3Rpb25JbnNwZWN0b3I8U291cmNlVHlwZT46OlNvdXJjZUl0ZW1UeXBlOwotICAg
IHVzaW5nIERlc3RpbmF0aW9uSXRlbVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxNYXBG
dW5jdGlvbihTb3VyY2VJdGVtVHlwZSYpPjo6dHlwZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkl0
ZW1UeXBlID0gc3RkOjpyZXN1bHRfb2ZfdDxNYXBGdW5jdGlvbihTb3VyY2VJdGVtVHlwZSYpPjsK
IAogICAgIHN0YXRpYyBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKFNvdXJjZVR5cGUg
c291cmNlLCBjb25zdCBNYXBGdW5jdGlvbiYgbWFwRnVuY3Rpb24pCiAgICAgewpAQCAtMTYxMyw5
ICsxNjEzLDkgQEAgc3RydWN0IE1hcHBlciB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBG
dW5jdGlvbiwgdHlwZW5hbWUgU291cmNlVHlwZT4KLXN0cnVjdCBNYXBwZXI8TWFwRnVuY3Rpb24s
IFNvdXJjZVR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVy
ZW5jZTxTb3VyY2VUeXBlJiY+Ojp2YWx1ZT46OnR5cGU+IHsKK3N0cnVjdCBNYXBwZXI8TWFwRnVu
Y3Rpb24sIFNvdXJjZVR5cGUsIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19ydmFsdWVfcmVmZXJl
bmNlPFNvdXJjZVR5cGUmJj46OnZhbHVlPj4gewogICAgIHVzaW5nIFNvdXJjZUl0ZW1UeXBlID0g
dHlwZW5hbWUgQ29sbGVjdGlvbkluc3BlY3RvcjxTb3VyY2VUeXBlPjo6U291cmNlSXRlbVR5cGU7
Ci0gICAgdXNpbmcgRGVzdGluYXRpb25JdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29m
PE1hcEZ1bmN0aW9uKFNvdXJjZUl0ZW1UeXBlJiYpPjo6dHlwZTsKKyAgICB1c2luZyBEZXN0aW5h
dGlvbkl0ZW1UeXBlID0gc3RkOjpyZXN1bHRfb2ZfdDxNYXBGdW5jdGlvbihTb3VyY2VJdGVtVHlw
ZSYmKT47CiAKICAgICBzdGF0aWMgVmVjdG9yPERlc3RpbmF0aW9uSXRlbVR5cGU+IG1hcChTb3Vy
Y2VUeXBlJiYgc291cmNlLCBjb25zdCBNYXBGdW5jdGlvbiYgbWFwRnVuY3Rpb24pCiAgICAgewpA
QCAtMTY1Myw3ICsxNjUzLDcgQEAgaW5saW5lIGF1dG8gY29weVRvVmVjdG9yT2YoY29uc3QgQ29s
bGVjdAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uPgogc3RydWN0IENvcHlUb1ZlY3Rv
clJlc3VsdCB7Ci0gICAgdXNpbmcgVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2N2PHR5cGVu
YW1lIENvbGxlY3Rpb25JbnNwZWN0b3I8Q29sbGVjdGlvbj46OlNvdXJjZUl0ZW1UeXBlPjo6dHlw
ZTsKKyAgICB1c2luZyBUeXBlID0gc3RkOjpyZW1vdmVfY3ZfdDx0eXBlbmFtZSBDb2xsZWN0aW9u
SW5zcGVjdG9yPENvbGxlY3Rpb24+OjpTb3VyY2VJdGVtVHlwZT47CiB9OwogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2xsZWN0aW9uPgpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9JbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmgJKHJldmlzaW9uIDIyMzMwNikKKysrIFNvdXJjZS9XVEYv
d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw4ICs1Myw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNpZ25lZEludGUKIGlu
bGluZSB0eXBlbmFtZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5
cGUgbnVtYmVyVG9TdHJpbmdTaWduZWQoU2lnbmVkSW50ZWdlclR5cGUgbnVtYmVyLCB0eXBlbmFt
ZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uVHJhaXQ8VD46OkFkZGl0aW9uYWxBcmd1bWVudFR5
cGUqIGFkZGl0aW9uYWxBcmd1bWVudCA9IG51bGxwdHIpCiB7CiAgICAgaWYgKG51bWJlciA8IDAp
Ci0gICAgICAgIHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGw8VCwgdHlwZW5hbWUgc3RkOjptYWtl
X3Vuc2lnbmVkPFNpZ25lZEludGVnZXJUeXBlPjo6dHlwZSwgTmVnYXRpdmVOdW1iZXI+KC1udW1i
ZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbDxU
LCB0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWduZWQ8U2lnbmVkSW50ZWdlclR5cGU+Ojp0eXBlLCBQ
b3NpdGl2ZU51bWJlcj4obnVtYmVyLCBhZGRpdGlvbmFsQXJndW1lbnQpOworICAgICAgICByZXR1
cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHN0ZDo6bWFrZV91bnNpZ25lZF90PFNpZ25lZEludGVn
ZXJUeXBlPiwgTmVnYXRpdmVOdW1iZXI+KC1udW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7Cisg
ICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbDxULCBzdGQ6Om1ha2VfdW5zaWduZWRfdDxTaWdu
ZWRJbnRlZ2VyVHlwZT4sIFBvc2l0aXZlTnVtYmVyPihudW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVu
dCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5
cGU+CkBAIC04Nyw4ICs4Nyw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5
cGVuYW0KIGlubGluZSB2b2lkIHdyaXRlTnVtYmVyVG9CdWZmZXJTaWduZWQoU2lnbmVkSW50ZWdl
clR5cGUgbnVtYmVyLCBDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAobnVt
YmVyIDwgMCkKLSAgICAgICAgcmV0dXJuIHdyaXRlTnVtYmVyVG9CdWZmZXJJbXBsPENoYXJhY3Rl
clR5cGUsIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxTaWduZWRJbnRlZ2VyVHlwZT46OnR5
cGUsIE5lZ2F0aXZlTnVtYmVyPigtbnVtYmVyLCBkZXN0aW5hdGlvbik7Ci0gICAgcmV0dXJuIHdy
aXRlTnVtYmVyVG9CdWZmZXJJbXBsPENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIHN0ZDo6bWFrZV91
bnNpZ25lZDxTaWduZWRJbnRlZ2VyVHlwZT46OnR5cGUsIFBvc2l0aXZlTnVtYmVyPihudW1iZXIs
IGRlc3RpbmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHdyaXRlTnVtYmVyVG9CdWZmZXJJbXBsPENo
YXJhY3RlclR5cGUsIHN0ZDo6bWFrZV91bnNpZ25lZF90PFNpZ25lZEludGVnZXJUeXBlPiwgTmVn
YXRpdmVOdW1iZXI+KC1udW1iZXIsIGRlc3RpbmF0aW9uKTsKKyAgICByZXR1cm4gd3JpdGVOdW1i
ZXJUb0J1ZmZlckltcGw8Q2hhcmFjdGVyVHlwZSwgc3RkOjptYWtlX3Vuc2lnbmVkX3Q8U2lnbmVk
SW50ZWdlclR5cGU+LCBQb3NpdGl2ZU51bWJlcj4obnVtYmVyLCBkZXN0aW5hdGlvbik7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdl
clR5cGU+CkBAIC0xMTgsOCArMTE4LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgU2lnbmVkSW50ZWdl
clR5cGU+CiBpbmxpbmUgdW5zaWduZWQgbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ1NpZ25lZChTaWdu
ZWRJbnRlZ2VyVHlwZSBudW1iZXIpCiB7CiAgICAgaWYgKG51bWJlciA8IDApCi0gICAgICAgIHJl
dHVybiBsZW5ndGhPZk51bWJlckFzU3RyaW5nSW1wbDx0eXBlbmFtZSBzdGQ6Om1ha2VfdW5zaWdu
ZWQ8U2lnbmVkSW50ZWdlclR5cGU+Ojp0eXBlLCBOZWdhdGl2ZU51bWJlcj4oLW51bWJlcik7Ci0g
ICAgcmV0dXJuIGxlbmd0aE9mTnVtYmVyQXNTdHJpbmdJbXBsPHR5cGVuYW1lIHN0ZDo6bWFrZV91
bnNpZ25lZDxTaWduZWRJbnRlZ2VyVHlwZT46OnR5cGUsIFBvc2l0aXZlTnVtYmVyPihudW1iZXIp
OworICAgICAgICByZXR1cm4gbGVuZ3RoT2ZOdW1iZXJBc1N0cmluZ0ltcGw8c3RkOjptYWtlX3Vu
c2lnbmVkX3Q8U2lnbmVkSW50ZWdlclR5cGU+LCBOZWdhdGl2ZU51bWJlcj4oLW51bWJlcik7Cisg
ICAgcmV0dXJuIGxlbmd0aE9mTnVtYmVyQXNTdHJpbmdJbXBsPHN0ZDo6bWFrZV91bnNpZ25lZF90
PFNpZ25lZEludGVnZXJUeXBlPiwgUG9zaXRpdmVOdW1iZXI+KG51bWJlcik7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>