<?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>217343</bug_id>
          
          <creation_ts>2020-10-05 15:16:54 -0700</creation_ts>
          <short_desc>Improvements to VectorMath API</short_desc>
          <delta_ts>2020-10-05 18:58:21 -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>Web Audio</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>212611</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694888</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 15:16:54 -0700</bug_when>
    <thetext>Drop VectorMath&apos;s stride parameters since the call site always pass 1 as stride. This allows us to simplify the internal implementation in VectorMath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694958</commentid>
    <comment_count>1</comment_count>
      <attachid>410591</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-05 17:03:34 -0700</bug_when>
    <thetext>Created attachment 410591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694996</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-05 18:57:30 -0700</bug_when>
    <thetext>Committed r268026: &lt;https://trac.webkit.org/changeset/268026&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410591.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694997</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-05 18:58:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/69981079&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410591</attachid>
            <date>2020-10-05 17:03:34 -0700</date>
            <delta_ts>2020-10-05 18:57:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217343-20201005170333.patch</filename>
            <type>text/plain</type>
            <size>83274</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwZmI5MWY1NGVmOTg0
YjAzY2E1MjYzZWZiYzkxYWFhODkzYjEwZi4uOThiZTRjMGVkZDgzMTNlOTY4MTdmMzcwOTllNDRk
NmZmYWQ3NjBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIwLTEwLTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZW1lbnRzIHRvIFZl
Y3Rvck1hdGggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTczNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgZm9sbG93aW5nIGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8gdGhlIFZlY3Rvck1h
dGggQVBJOgorICAgICAgICAtIFVzZSBjbGVhcmVyIG5hbWVzIGZvciB0aGUgZnVuY3Rpb25zLCBl
LmcuIFZlY3Rvck1hdGg6OnZtdWwoKSAtPiBWZWN0b3JNYXRoOjptdWx0aXBseSgpCisgICAgICAg
IC0gRHJvcCBzdHJpZGUgcGFyYW1ldGVycyBhcyB0aGUgY2FsbCBzaXRlcyBhbHdheXMgcGFzcyAx
LiBUaGlzIGhlbHBzIHNpbXBsaWZ5IHRoZSBjb2RlLgorICAgICAgICAtIFN0b3AgdXNpbmcgb3V0
LXBhcmFtZXRlcnMgYW5kIGhhdmUgdGhlIGZ1bmN0aW9ucyByZXR1cm4gYSB2YWx1ZSB3aGVuIG5l
ZWRlZC4KKyAgICAgICAgLSBQYXNzIGlucHV0IHNjYWxhciBhcyAnZmxvYXQnIGluc3RlYWQgb2Yg
J2NvbnN0IGZsb2F0KicuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBXZWItZmFjaW5nIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1ZXNGb3JUaW1lUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbVRpbWVsaW5lOjpwcm9jZXNzTGluZWFyUmFtcCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1BhcmFtVGltZWxpbmU6OnByb2Nlc3NTZXRUYXJnZXQp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T3NjaWxsYXRvck5vZGU6OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlUGhhc2VJ
bmNyZW1lbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQZXJpb2RpY1dhdmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVz
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0J1czo6c3BlYWtlcnNTdW1Gcm9tQnlEb3duTWl4aW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQnVzOjpjb3B5V2l0aEdhaW5Gcm9tKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpjb3B5V2l0aFNhbXBsZUFjY3VyYXRlR2FpblZhbHVlc0Zyb20pOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0No
YW5uZWw6OnNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ2hhbm5lbDo6c3VtRnJvbSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NoYW5uZWw6Om1heEFic1ZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EaXJlY3RDb252b2x2ZXIuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRlRDb252
b2x2ZXI6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpzY2FsZUZGVCk6CisgICAgICAgIChXZWJDb3Jl
OjpGRlRGcmFtZTo6bXVsdGlwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0lJUkZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJSVJGaWx0ZXI6OnRhaWxUaW1lKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9SZXZlcmIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRl
Tm9ybWFsaXphdGlvblNjYWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJBY2N1
bXVsYXRpb25CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQWNjdW11bGF0aW9u
QnVmZmVyOjphY2N1bXVsYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlclN0YWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlclN0YWdlOjpSZXZlcmJDb252
b2x2ZXJTdGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlZlY3Rvck1hdGg6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRo
OjphZGRTY2FsYXIpOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6bXVsdGlwbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6bXVsdGlwbHlDb21wbGV4KToKKyAgICAgICAg
KFdlYkNvcmU6OlZlY3Rvck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcik6CisgICAgICAgIChX
ZWJDb3JlOjpWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlZlY3Rvck1hdGg6OnN1bU9mU3F1YXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRo
OjpjbGFtcCk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3JNYXRoOjpsaW5lYXJUb0RlY2liZWxz
KToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3Rvck1hdGg6OmlzMTZCeXRlQWxpZ25lZCk6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RlRGcmFtZTo6ZG9JbnZlcnNlRkZUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9EZXN0aW5hdGlvbk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnByb2Nlc3NCdXNBZnRlclJlbmRlcik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2FtcGxlQnVmZmVyTGlzdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
bWFjL0ZGVEZyYW1lTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZGVEZyYW1lOjpkb0ZGVCk6
CisgICAgICAgIChXZWJDb3JlOjpGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKToKKwogMjAyMC0xMC0w
NSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YXNzZXJ0aW9uIGZpeCBhZnRlciByMjY4MDA2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKaW5kZXggZmE3YWY1ZGE2ZjA2YjUzNTg4MWMyN2JlMDA5
MDhkNjA3ZjY3YzdkNC4uYWEzN2YxYjg5Yjg5ZjM2NTczNzk5MDllMjQyNWJjMmY5ZmI5MzY3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCkBA
IC0yOTIsOSArMjkyLDcgQEAgdm9pZCBBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyhm
bG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZhbHVlcywgYm8KICAgICB9CiAKICAgICAv
LyBDbGFtcCB2YWx1ZXMgYmFzZWQgb24gcmFuZ2UgYWxsb3dlZCBieSBBdWRpb1BhcmFtJ3MgbWlu
IGFuZCBtYXggdmFsdWVzLgotICAgIGZsb2F0IG1pblZhbHVlID0gdGhpcy0+bWluVmFsdWUoKTsK
LSAgICBmbG9hdCBtYXhWYWx1ZSA9IHRoaXMtPm1heFZhbHVlKCk7Ci0gICAgVmVjdG9yTWF0aDo6
dmNsaXAodmFsdWVzLCAxLCAmbWluVmFsdWUsICZtYXhWYWx1ZSwgdmFsdWVzLCAxLCBudW1iZXJP
ZlZhbHVlcyk7CisgICAgVmVjdG9yTWF0aDo6Y2xhbXAodmFsdWVzLCBtaW5WYWx1ZSgpLCBtYXhW
YWx1ZSgpLCB2YWx1ZXMsIG51bWJlck9mVmFsdWVzKTsKIH0KIAogdm9pZCBBdWRpb1BhcmFtOjpj
YWxjdWxhdGVUaW1lbGluZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1iZXJPZlZh
bHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmNwcAppbmRleCA1OGVmYTdhZThmNDlkMzg5ZjU4N2RiNmRmNDA4MDdjZWZi
Yjc1MzdlLi5hOTFhNDlhN2FkYzk5YmI0OTI5MTlmNjg5ZjVjODc4ZTY1NjhiNWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtVGltZWxp
bmUuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgZmxvYXQgQXVkaW9QYXJhbVRpbWVsaW5lOjp2YWx1
ZXNGb3JUaW1lUmFuZ2Uoc2l6ZV90IHN0YXJ0RnJhbWUsIHNpemVfdCBlbmRGcmFtZSwKICAgICBm
bG9hdCB2YWx1ZSA9IHZhbHVlc0ZvclRpbWVSYW5nZUltcGwoc3RhcnRGcmFtZSwgZW5kRnJhbWUs
IGRlZmF1bHRWYWx1ZSwgdmFsdWVzLCBudW1iZXJPZlZhbHVlcywgc2FtcGxlUmF0ZSwgY29udHJv
bFJhdGUpOwogCiAgICAgLy8gQ2xhbXAgdmFsdWVzIGJhc2VkIG9uIHJhbmdlIGFsbG93ZWQgYnkg
QXVkaW9QYXJhbSdzIG1pbiBhbmQgbWF4IHZhbHVlcy4KLSAgICBWZWN0b3JNYXRoOjp2Y2xpcCh2
YWx1ZXMsIDEsICZtaW5WYWx1ZSwgJm1heFZhbHVlLCB2YWx1ZXMsIDEsIG51bWJlck9mVmFsdWVz
KTsKKyAgICBWZWN0b3JNYXRoOjpjbGFtcCh2YWx1ZXMsIG1pblZhbHVlLCBtYXhWYWx1ZSwgdmFs
dWVzLCBudW1iZXJPZlZhbHVlcyk7CiAKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC02NTksMTMg
KzY1OSwxMCBAQCB2b2lkIEF1ZGlvUGFyYW1UaW1lbGluZTo6cHJvY2Vzc0xpbmVhclJhbXAoZmxv
YXQqIHZhbHVlcywgdW5zaWduZWQmIHdyaXRlSW5kZXgsCiAgICAgICAgIHZhbHVlc1t3cml0ZUlu
ZGV4ICsgMV0gPSAxOwogICAgICAgICB2YWx1ZXNbd3JpdGVJbmRleCArIDJdID0gMjsKICAgICAg
ICAgdmFsdWVzW3dyaXRlSW5kZXggKyAzXSA9IDM7Ci0gICAgICAgIGZsb2F0IHNjYWxhciA9IHNh
bXBsaW5nUGVyaW9kOwotICAgICAgICBWZWN0b3JNYXRoOjp2c211bCh2YWx1ZXMgKyB3cml0ZUlu
ZGV4LCAxLCAmc2NhbGFyLCB2YWx1ZXMgKyB3cml0ZUluZGV4LCAxLCA0KTsKLSAgICAgICAgc2Nh
bGFyID0gY3VycmVudEZyYW1lICogc2FtcGxpbmdQZXJpb2QgLSB0aW1lMS52YWx1ZSgpOwotICAg
ICAgICBWZWN0b3JNYXRoOjp2c2FkZCh2YWx1ZXMgKyB3cml0ZUluZGV4LCAxLCAmc2NhbGFyLCB2
YWx1ZXMgKyB3cml0ZUluZGV4LCAxLCA0KTsKLSAgICAgICAgc2NhbGFyID0gayAqIHZhbHVlRGVs
dGE7Ci0gICAgICAgIFZlY3Rvck1hdGg6OnZzbXVsKHZhbHVlcyArIHdyaXRlSW5kZXgsIDEsICZz
Y2FsYXIsIHZhbHVlcyArIHdyaXRlSW5kZXgsIDEsIDQpOwotICAgICAgICBWZWN0b3JNYXRoOjp2
c2FkZCh2YWx1ZXMgKyB3cml0ZUluZGV4LCAxLCAmdmFsdWUxLCB2YWx1ZXMgKyB3cml0ZUluZGV4
LCAxLCA0KTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcih2YWx1ZXMgKyB3
cml0ZUluZGV4LCBzYW1wbGluZ1BlcmlvZCwgdmFsdWVzICsgd3JpdGVJbmRleCwgNCk7CisgICAg
ICAgIFZlY3Rvck1hdGg6OmFkZFNjYWxhcih2YWx1ZXMgKyB3cml0ZUluZGV4LCBjdXJyZW50RnJh
bWUgKiBzYW1wbGluZ1BlcmlvZCAtIHRpbWUxLnZhbHVlKCksIHZhbHVlcyArIHdyaXRlSW5kZXgs
IDQpOworICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKHZhbHVlcyArIHdyaXRl
SW5kZXgsIGsgKiB2YWx1ZURlbHRhLCB2YWx1ZXMgKyB3cml0ZUluZGV4LCA0KTsKKyAgICAgICAg
VmVjdG9yTWF0aDo6YWRkU2NhbGFyKHZhbHVlcyArIHdyaXRlSW5kZXgsIHZhbHVlMSwgdmFsdWVz
ICsgd3JpdGVJbmRleCwgNCk7CiAKICAgICAgICAgZmxvYXQgaW5jID0gNCAqIHNhbXBsaW5nUGVy
aW9kICogayAqIHZhbHVlRGVsdGE7CiAKQEAgLTY3Nyw3ICs2NzQsNyBAQCB2b2lkIEF1ZGlvUGFy
YW1UaW1lbGluZTo6cHJvY2Vzc0xpbmVhclJhbXAoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQmIHdy
aXRlSW5kZXgsCiAgICAgICAgIC8vIFByb2Nlc3MgNCBsb29wIHN0ZXBzLgogICAgICAgICB3cml0
ZUluZGV4ICs9IDQ7CiAgICAgICAgIGZvciAoOyB3cml0ZUluZGV4IDwgZmlsbFRvRnJhbWVUcnVu
Yzsgd3JpdGVJbmRleCArPSA0KQotICAgICAgICAgICAgVmVjdG9yTWF0aDo6dnNhZGQodmFsdWVz
ICsgd3JpdGVJbmRleCAtIDQsIDEsICZpbmMsIHZhbHVlcyArIHdyaXRlSW5kZXgsIDEsIDQpOwor
ICAgICAgICAgICAgVmVjdG9yTWF0aDo6YWRkU2NhbGFyKHZhbHVlcyArIHdyaXRlSW5kZXggLSA0
LCBpbmMsIHZhbHVlcyArIHdyaXRlSW5kZXgsIDQpOwogICAgIH0KICAgICAvLyBVcGRhdGUgfHZh
bHVlfCB3aXRoIHRoZSBsYXN0IHZhbHVlIGNvbXB1dGVkIHNvIHRoYXQgdGhlIC52YWx1ZSBhdHRy
aWJ1dGUgb2YgdGhlIEF1ZGlvUGFyYW0gZ2V0cwogICAgIC8vIHRoZSBjb3JyZWN0IGxpbmVhciBy
YW1wIHZhbHVlLCBpbiBjYXNlIHRoZSBmb2xsb3dpbmcgbG9vcCBkb2Vzbid0IGV4ZWN1dGUuCkBA
IC03MTcsOCArNzE0LDggQEAgdm9pZCBBdWRpb1BhcmFtVGltZWxpbmU6OnByb2Nlc3NTZXRUYXJn
ZXQoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQmIHdyaXRlSW5kZXgsIHUKICAgICAgICAgZm9yICg7
IHdyaXRlSW5kZXggPCBmaWxsVG9GcmFtZVRydW5jOyB3cml0ZUluZGV4ICs9IDQpIHsKICAgICAg
ICAgICAgIGRlbHRhID0gdGFyZ2V0IC0gdmFsdWU7CiAKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6
OnZzbXVsKCZjVmVjdG9yWzBdLCAxLCAmZGVsdGEsICZ2YWx1ZXNbd3JpdGVJbmRleF0sIDEsIDQp
OwotICAgICAgICAgICAgVmVjdG9yTWF0aDo6dnNhZGQoJnZhbHVlc1t3cml0ZUluZGV4XSwgMSwg
JnZhbHVlLCAmdmFsdWVzW3dyaXRlSW5kZXhdLCAxLCA0KTsKKyAgICAgICAgICAgIFZlY3Rvck1h
dGg6Om11bHRpcGx5QnlTY2FsYXIoJmNWZWN0b3JbMF0sIGRlbHRhLCAmdmFsdWVzW3dyaXRlSW5k
ZXhdLCA0KTsKKyAgICAgICAgICAgIFZlY3Rvck1hdGg6OmFkZFNjYWxhcigmdmFsdWVzW3dyaXRl
SW5kZXhdLCB2YWx1ZSwgJnZhbHVlc1t3cml0ZUluZGV4XSwgNCk7CiAKICAgICAgICAgICAgIHZh
bHVlICs9IGRlbHRhICogYzM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggOTVkMTJjMzdiNDFlOWIwY2Ux
YWMxN2VjZjA4MDJjMGJhZWQ3NjRlMS4uZjc3YjFjODVkMzRmNWU4NTdiMGY2ZDJlYmQ4YzczOTI1
MWNhOTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2Np
bGxhdG9yTm9kZS5jcHAKQEAgLTM3LDggKzM3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci11c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKLQogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKE9zY2lsbGF0b3JOb2RlKTsKIAogLy8gQnJlYWtwb2ludHMgd2hlcmUgd2UgZGVpY2RlIHRv
IGRvIGxpbmVhciBpbnRlcm9wbGF0aW9uLCAzLXBvaW50IGludGVycG9sYXRpb24gb3IgNS1wb2lu
dCBpbnRlcnBvbGF0aW9uLiBTZWUgZG9JbnRlcnBvbGF0aW9uKCkuCkBAIC0xNTgsMTQgKzE1Niwx
MyBAQCBib29sIE9zY2lsbGF0b3JOb2RlOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5j
cmVtZW50cyhzaXplX3QgZnJhbWVzVG9Qcm9jZQogICAgICAgICBtX2RldHVuZS0+Y2FsY3VsYXRl
U2FtcGxlQWNjdXJhdGVWYWx1ZXMoZGV0dW5lVmFsdWVzLCBmcmFtZXNUb1Byb2Nlc3MpOwogCiAg
ICAgICAgIC8vIENvbnZlcnQgZnJvbSBjZW50cyB0byByYXRlIHNjYWxhci4KLSAgICAgICAgZmxv
YXQgayA9IDEuMCAvIDEyMDA7Ci0gICAgICAgIHZzbXVsKGRldHVuZVZhbHVlcywgMSwgJmssIGRl
dHVuZVZhbHVlcywgMSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVs
dGlwbHlCeVNjYWxhcihkZXR1bmVWYWx1ZXMsIDEuMCAvIDEyMDAsIGRldHVuZVZhbHVlcywgZnJh
bWVzVG9Qcm9jZXNzKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lc1Rv
UHJvY2VzczsgKytpKQogICAgICAgICAgICAgZGV0dW5lVmFsdWVzW2ldID0gc3RkOjpleHAyKGRl
dHVuZVZhbHVlc1tpXSk7CiAKICAgICAgICAgaWYgKGhhc0ZyZXF1ZW5jeUNoYW5nZXMpIHsKICAg
ICAgICAgICAgIC8vIE11bHRpcGx5IGZyZXF1ZW5jaWVzIGJ5IGRldHVuZSBzY2FsaW5ncy4KLSAg
ICAgICAgICAgIHZtdWwoZGV0dW5lVmFsdWVzLCAxLCBwaGFzZUluY3JlbWVudHMsIDEsIHBoYXNl
SW5jcmVtZW50cywgMSwgZnJhbWVzVG9Qcm9jZXNzKTsKKyAgICAgICAgICAgIFZlY3Rvck1hdGg6
Om11bHRpcGx5KGRldHVuZVZhbHVlcywgcGhhc2VJbmNyZW1lbnRzLCBwaGFzZUluY3JlbWVudHMs
IGZyYW1lc1RvUHJvY2Vzcyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmbG9h
dCBkZXR1bmUgPSBtX2RldHVuZS0+ZmluYWxWYWx1ZSgpOwpAQCAtMTc2LDcgKzE3Myw3IEBAIGJv
b2wgT3NjaWxsYXRvck5vZGU6OmNhbGN1bGF0ZVNhbXBsZUFjY3VyYXRlUGhhc2VJbmNyZW1lbnRz
KHNpemVfdCBmcmFtZXNUb1Byb2NlCiAgICAgaWYgKGhhc1NhbXBsZUFjY3VyYXRlVmFsdWVzKSB7
CiAgICAgICAgIGNsYW1wRnJlcXVlbmN5KHBoYXNlSW5jcmVtZW50cywgZnJhbWVzVG9Qcm9jZXNz
LCBjb250ZXh0KCkuc2FtcGxlUmF0ZSgpIC8gMik7CiAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBm
cmVxdWVuY3kgdG8gd2F2ZSBpbmNyZW1lbnQuCi0gICAgICAgIHZzbXVsKHBoYXNlSW5jcmVtZW50
cywgMSwgJmZpbmFsU2NhbGUsIHBoYXNlSW5jcmVtZW50cywgMSwgZnJhbWVzVG9Qcm9jZXNzKTsK
KyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihwaGFzZUluY3JlbWVudHMsIGZp
bmFsU2NhbGUsIHBoYXNlSW5jcmVtZW50cywgZnJhbWVzVG9Qcm9jZXNzKTsKICAgICB9CiAKICAg
ICByZXR1cm4gaGFzU2FtcGxlQWNjdXJhdGVWYWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5jcHAKaW5kZXggN2MyMWUyOWMzNTg0MjFlODU1
MjFhMGQ4NmI4YjU5M2JkZmZmZTg2Ny4uMGEwYjMyMWJlYmMzNDljN2E5YjEwYzM3NDIwZWNmMDI2
YjVmNGUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QZXJp
b2RpY1dhdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9k
aWNXYXZlLmNwcApAQCAtNDcsOCArNDcsNiBAQCBjb25zdGV4cHIgdW5zaWduZWQgTWF4UGVyaW9k
aWNXYXZlU2l6ZSA9IDE2Mzg0OwogY29uc3RleHByIGZsb2F0IENlbnRzUGVyUmFuZ2UgPSAxMjAw
IC8gTnVtYmVyT2ZPY3RhdmVCYW5kczsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotdXNp
bmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CiAKIFJlZjxQZXJpb2RpY1dhdmU+IFBlcmlvZGljV2F2
ZTo6Y3JlYXRlKGZsb2F0IHNhbXBsZVJhdGUsIEZsb2F0MzJBcnJheSYgcmVhbCwgRmxvYXQzMkFy
cmF5JiBpbWFnaW5hcnkpCiB7CkBAIC0yMDIsMTAgKzIwMCw4IEBAIHZvaWQgUGVyaW9kaWNXYXZl
OjpjcmVhdGVCYW5kTGltaXRlZFRhYmxlcyhjb25zdCBmbG9hdCogcmVhbERhdGEsIGNvbnN0IGZs
b2F0KiBpCiAgICAgICAgIGZsb2F0KiBpbWFnUCA9IGZyYW1lLmltYWdEYXRhKCk7CiAKICAgICAg
ICAgLy8gQ29weSBmcm9tIGxvYWRlZCBmcmVxdWVuY3kgZGF0YSBhbmQgc2NhbGUuCi0gICAgICAg
IGZsb2F0IHNjYWxlID0gZmZ0U2l6ZTsKLSAgICAgICAgdnNtdWwocmVhbERhdGEsIDEsICZzY2Fs
ZSwgcmVhbFAsIDEsIG51bWJlck9mQ29tcG9uZW50cyk7Ci0gICAgICAgIHNjYWxlID0gLXNjYWxl
OwotICAgICAgICB2c211bChpbWFnRGF0YSwgMSwgJnNjYWxlLCBpbWFnUCwgMSwgbnVtYmVyT2ZD
b21wb25lbnRzKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihyZWFsRGF0
YSwgZmZ0U2l6ZSwgcmVhbFAsIG51bWJlck9mQ29tcG9uZW50cyk7CisgICAgICAgIFZlY3Rvck1h
dGg6Om11bHRpcGx5QnlTY2FsYXIoaW1hZ0RhdGEsIC1zdGF0aWNfY2FzdDxmbG9hdD4oZmZ0U2l6
ZSksIGltYWdQLCBudW1iZXJPZkNvbXBvbmVudHMpOwogCiAgICAgICAgIC8vIEZpbmQgdGhlIHN0
YXJ0aW5nIGJpbiB3aGVyZSB3ZSBzaG91bGQgc3RhcnQgY3VsbGluZy4KICAgICAgICAgLy8gV2Ug
bmVlZCB0byBjbGVhciBvdXQgdGhlIGhpZ2hlc3QgZnJlcXVlbmNpZXMgdG8gYmFuZC1saW1pdCB0
aGUgd2F2ZWZvcm0uCkBAIC0yMzYsOCArMjMyLDcgQEAgdm9pZCBQZXJpb2RpY1dhdmU6OmNyZWF0
ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwgY29uc3QgZmxvYXQqIGkK
ICAgICAgICAgLy8gRm9yIHRoZSBmaXJzdCByYW5nZSAod2hpY2ggaGFzIHRoZSBoaWdoZXN0IHBv
d2VyKSwgY2FsY3VsYXRlIGl0cyBwZWFrIHZhbHVlIHRoZW4gY29tcHV0ZSBub3JtYWxpemF0aW9u
IHNjYWxlLgogICAgICAgICBpZiAoZGlzYWJsZU5vcm1hbGl6YXRpb24gPT0gU2hvdWxkRGlzYWJs
ZU5vcm1hbGl6YXRpb246Ok5vKSB7CiAgICAgICAgICAgICBpZiAoIXJhbmdlSW5kZXgpIHsKLSAg
ICAgICAgICAgICAgICBmbG9hdCBtYXhWYWx1ZTsKLSAgICAgICAgICAgICAgICB2bWF4bWd2KGRh
dGEsIDEsICZtYXhWYWx1ZSwgZmZ0U2l6ZSk7CisgICAgICAgICAgICAgICAgZmxvYXQgbWF4VmFs
dWUgPSBWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKGRhdGEsIGZmdFNpemUpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1heFZhbHVlKQogICAgICAgICAgICAgICAgICAgICBub3JtYWxpemF0
aW9uU2NhbGUgPSAxLjBmIC8gbWF4VmFsdWU7CkBAIC0yNDUsNyArMjQwLDcgQEAgdm9pZCBQZXJp
b2RpY1dhdmU6OmNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsRGF0YSwg
Y29uc3QgZmxvYXQqIGkKICAgICAgICAgfQogCiAgICAgICAgIC8vIEFwcGx5IG5vcm1hbGl6YXRp
b24gc2NhbGUuCi0gICAgICAgIHZzbXVsKGRhdGEsIDEsICZub3JtYWxpemF0aW9uU2NhbGUsIGRh
dGEsIDEsIGZmdFNpemUpOworICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseUJ5U2NhbGFyKGRh
dGEsIG5vcm1hbGl6YXRpb25TY2FsZSwgZGF0YSwgZmZ0U2l6ZSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNw
cAppbmRleCA5NzZjMGIyZjRmOTFhZDNkZTUzYjk3Njc3NTk4YmE1MTBmNWY1MDZmLi5mZDI0NGVj
MWNlODIxZDJlM2I5MzI1Yjk1ODE1N2UzOTJkM2RkYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKQEAgLTE4Niw3ICsx
ODYsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0RnJlcXVlbmN5RGF0YShGbG9h
dDMyQXJyYXkmIGRlc3RpbmF0aW9uQXJyYXkpCiAgICAgCiAgICAgLy8gQ29udmVydCBmcm9tIGxp
bmVhciBtYWduaXR1ZGUgdG8gZmxvYXRpbmctcG9pbnQgZGVjaWJlbHMuCiAgICAgc2l6ZV90IGxl
bmd0aCA9IHN0ZDo6bWluPHNpemVfdD4obWFnbml0dWRlQnVmZmVyKCkuc2l6ZSgpLCBkZXN0aW5h
dGlvbkFycmF5Lmxlbmd0aCgpKTsKLSAgICBWZWN0b3JNYXRoOjpsaW5lYXJUb0RlY2liZWxzKG1h
Z25pdHVkZUJ1ZmZlcigpLmRhdGEoKSwgMSwgZGVzdGluYXRpb25BcnJheS5kYXRhKCksIDEsIGxl
bmd0aCk7CisgICAgVmVjdG9yTWF0aDo6bGluZWFyVG9EZWNpYmVscyhtYWduaXR1ZGVCdWZmZXIo
KS5kYXRhKCksIGRlc3RpbmF0aW9uQXJyYXkuZGF0YSgpLCBsZW5ndGgpOwogfQogCiB2b2lkIFJl
YWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVGcmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkmIGRlc3RpbmF0
aW9uQXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRp
b0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAKaW5k
ZXggNzM2ZGEzYWZjZjJjNWUxYmNkNmEzNGU3YTg4ZWQ3ZDE0YWM3YTQ5OS4uOWQ4Y2ZmMTdkYmU0
MmFlMGZkZDNhYjkzOWE4YjI3OWNmM2YzYzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtNDIsOCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBWZWN0b3JNYXRoOwotCiBjb25zdGV4cHIgdW5zaWduZWQg
TWF4QnVzQ2hhbm5lbHMgPSAzMjsKIAogUmVmUHRyPEF1ZGlvQnVzPiBBdWRpb0J1czo6Y3JlYXRl
KHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBsZW5ndGgsIGJvb2wgYWxsb2NhdGUp
CkBAIC0zMTksOSArMzE3LDggQEAgdm9pZCBBdWRpb0J1czo6c3BlYWtlcnNTdW1Gcm9tQnlEb3du
TWl4aW5nKGNvbnN0IEF1ZGlvQnVzJiBzb3VyY2VCdXMpCiAgICAgICAgIGNvbnN0IGZsb2F0KiBz
b3VyY2VSID0gc291cmNlQnVzU2FmZS5jaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPmRhdGEo
KTsKIAogICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSBjaGFubmVsQnlUeXBlKENoYW5uZWxM
ZWZ0KS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAgZmxvYXQgc2NhbGUgPSAwLjU7Ci0gICAgICAg
IHZzbWEoc291cmNlTCwgMSwgJnNjYWxlLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOwotICAg
ICAgICB2c21hKHNvdXJjZVIsIDEsICZzY2FsZSwgZGVzdGluYXRpb24sIDEsIGxlbmd0aCgpKTsK
KyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlUaGVuQWRkU2NhbGFyKHNvdXJjZUwsIDAuNSwg
ZGVzdGluYXRpb24sIGxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlUaGVu
QWRkU2NhbGFyKHNvdXJjZVIsIDAuNSwgZGVzdGluYXRpb24sIGxlbmd0aCgpKTsKICAgICB9IGVs
c2UgaWYgKG51bWJlck9mU291cmNlQ2hhbm5lbHMgPT0gNCAmJiBudW1iZXJPZkRlc3RpbmF0aW9u
Q2hhbm5lbHMgPT0gMSkgewogICAgICAgICAvLyBEb3duLW1peGluZzogNCAtPiAxCiAgICAgICAg
IC8vIG91dHB1dCA9IDAuMjUgKiAoaW5wdXQuTCArIGlucHV0LlIgKyBpbnB1dC5TTCArIGlucHV0
LlNSKQpAQCAtMzMxLDEyICszMjgsMTEgQEAgdm9pZCBBdWRpb0J1czo6c3BlYWtlcnNTdW1Gcm9t
QnlEb3duTWl4aW5nKGNvbnN0IEF1ZGlvQnVzJiBzb3VyY2VCdXMpCiAgICAgICAgIGF1dG8qIHNv
dXJjZVNSID0gc291cmNlQnVzLmNoYW5uZWxCeVR5cGUoQ2hhbm5lbFN1cnJvdW5kUmlnaHQpLT5k
YXRhKCk7CiAKICAgICAgICAgYXV0byogZGVzdGluYXRpb24gPSBjaGFubmVsQnlUeXBlKENoYW5u
ZWxMZWZ0KS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAgZmxvYXQgc2NhbGUgPSAwLjI1OwogCi0g
ICAgICAgIHZzbWEoc291cmNlTCwgMSwgJnNjYWxlLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkp
OwotICAgICAgICB2c21hKHNvdXJjZVIsIDEsICZzY2FsZSwgZGVzdGluYXRpb24sIDEsIGxlbmd0
aCgpKTsKLSAgICAgICAgdnNtYShzb3VyY2VTTCwgMSwgJnNjYWxlLCBkZXN0aW5hdGlvbiwgMSwg
bGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJjZVNSLCAxLCAmc2NhbGUsIGRlc3RpbmF0aW9u
LCAxLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxh
cihzb3VyY2VMLCAwLjI1LCBkZXN0aW5hdGlvbiwgbGVuZ3RoKCkpOworICAgICAgICBWZWN0b3JN
YXRoOjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNlUiwgMC4yNSwgZGVzdGluYXRpb24sIGxl
bmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlUaGVuQWRkU2NhbGFyKHNvdXJj
ZVNMLCAwLjI1LCBkZXN0aW5hdGlvbiwgbGVuZ3RoKCkpOworICAgICAgICBWZWN0b3JNYXRoOjpt
dWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNlU1IsIDAuMjUsIGRlc3RpbmF0aW9uLCBsZW5ndGgo
KSk7CiAgICAgfSBlbHNlIGlmIChudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09IDYgJiYgbnVtYmVy
T2ZEZXN0aW5hdGlvbkNoYW5uZWxzID09IDEpIHsKICAgICAgICAgLy8gRG93bi1taXhpbmc6IDUu
MSAtPiAxCiAgICAgICAgIC8vIG91dHB1dCA9IHNxcnQoMS8yKSAqIChpbnB1dC5MICsgaW5wdXQu
UikgKyBpbnB1dC5DICsgMC41ICogKGlucHV0LlNMICsgaW5wdXQuU1IpCkBAIC0zNDgsMTMgKzM0
NCwxMiBAQCB2b2lkIEF1ZGlvQnVzOjpzcGVha2Vyc1N1bUZyb21CeURvd25NaXhpbmcoY29uc3Qg
QXVkaW9CdXMmIHNvdXJjZUJ1cykKIAogICAgICAgICBhdXRvKiBkZXN0aW5hdGlvbiA9IGNoYW5u
ZWxCeVR5cGUoQ2hhbm5lbExlZnQpLT5tdXRhYmxlRGF0YSgpOwogICAgICAgICBmbG9hdCBzY2Fs
ZVNxcnRIYWxmID0gc3FydGYoMC41KTsKLSAgICAgICAgZmxvYXQgc2NhbGVIYWxmID0gMC41ZjsK
IAotICAgICAgICB2c21hKHNvdXJjZUwsIDEsICZzY2FsZVNxcnRIYWxmLCBkZXN0aW5hdGlvbiwg
MSwgbGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJjZVIsIDEsICZzY2FsZVNxcnRIYWxmLCBk
ZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2YWRkKHNvdXJjZUMsIDEsIGRlc3Rp
bmF0aW9uLCAxLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJj
ZVNMLCAxLCAmc2NhbGVIYWxmLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2
c21hKHNvdXJjZVNSLCAxLCAmc2NhbGVIYWxmLCBkZXN0aW5hdGlvbiwgMSwgbGVuZ3RoKCkpOwor
ICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNlTCwgc2NhbGVT
cXJ0SGFsZiwgZGVzdGluYXRpb24sIGxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVs
dGlwbHlUaGVuQWRkU2NhbGFyKHNvdXJjZVIsIHNjYWxlU3FydEhhbGYsIGRlc3RpbmF0aW9uLCBs
ZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6OmFkZChzb3VyY2VDLCBkZXN0aW5hdGlvbiwg
ZGVzdGluYXRpb24sIGxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlUaGVu
QWRkU2NhbGFyKHNvdXJjZVNMLCAwLjUsIGRlc3RpbmF0aW9uLCBsZW5ndGgoKSk7CisgICAgICAg
IFZlY3Rvck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VTUiwgMC41LCBkZXN0aW5h
dGlvbiwgbGVuZ3RoKCkpOwogICAgIH0gZWxzZSBpZiAobnVtYmVyT2ZTb3VyY2VDaGFubmVscyA9
PSA0ICYmIG51bWJlck9mRGVzdGluYXRpb25DaGFubmVscyA9PSAyKSB7CiAgICAgICAgIC8vIERv
d24tbWl4aW5nOiA0IC0+IDIKICAgICAgICAgLy8gb3V0cHV0LkwgPSAwLjUgKiAoaW5wdXQuTCAr
IGlucHV0LlNMKQpAQCAtMzY2LDEyICszNjEsMTEgQEAgdm9pZCBBdWRpb0J1czo6c3BlYWtlcnNT
dW1Gcm9tQnlEb3duTWl4aW5nKGNvbnN0IEF1ZGlvQnVzJiBzb3VyY2VCdXMpCiAKICAgICAgICAg
YXV0byogZGVzdGluYXRpb25MID0gY2hhbm5lbEJ5VHlwZShDaGFubmVsTGVmdCktPm11dGFibGVE
YXRhKCk7CiAgICAgICAgIGF1dG8qIGRlc3RpbmF0aW9uUiA9IGNoYW5uZWxCeVR5cGUoQ2hhbm5l
bFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsKLSAgICAgICAgZmxvYXQgc2NhbGVIYWxmID0gMC41ZjsK
IAotICAgICAgICB2c21hKHNvdXJjZUwsIDEsICZzY2FsZUhhbGYsIGRlc3RpbmF0aW9uTCwgMSwg
bGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJjZVNMLCAxLCAmc2NhbGVIYWxmLCBkZXN0aW5h
dGlvbkwsIDEsIGxlbmd0aCgpKTsKLSAgICAgICAgdnNtYShzb3VyY2VSLCAxLCAmc2NhbGVIYWxm
LCBkZXN0aW5hdGlvblIsIDEsIGxlbmd0aCgpKTsKLSAgICAgICAgdnNtYShzb3VyY2VTUiwgMSwg
JnNjYWxlSGFsZiwgZGVzdGluYXRpb25SLCAxLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1h
dGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VMLCAwLjUsIGRlc3RpbmF0aW9uTCwgbGVu
Z3RoKCkpOworICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNl
U0wsIDAuNSwgZGVzdGluYXRpb25MLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6Om11
bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VSLCAwLjUsIGRlc3RpbmF0aW9uUiwgbGVuZ3RoKCkp
OworICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNlU1IsIDAu
NSwgZGVzdGluYXRpb25SLCBsZW5ndGgoKSk7CiAgICAgfSBlbHNlIGlmIChudW1iZXJPZlNvdXJj
ZUNoYW5uZWxzID09IDYgJiYgbnVtYmVyT2ZEZXN0aW5hdGlvbkNoYW5uZWxzID09IDIpIHsKICAg
ICAgICAgLy8gRG93bi1taXhpbmc6IDUuMSAtPiAyCiAgICAgICAgIC8vIG91dHB1dC5MID0gaW5w
dXQuTCArIHNxcnQoMS8yKSAqIChpbnB1dC5DICsgaW5wdXQuU0wpCkBAIC0zODYsMTIgKzM4MCwx
MiBAQCB2b2lkIEF1ZGlvQnVzOjpzcGVha2Vyc1N1bUZyb21CeURvd25NaXhpbmcoY29uc3QgQXVk
aW9CdXMmIHNvdXJjZUJ1cykKICAgICAgICAgZmxvYXQqIGRlc3RpbmF0aW9uUiA9IGNoYW5uZWxC
eVR5cGUoQ2hhbm5lbFJpZ2h0KS0+bXV0YWJsZURhdGEoKTsKICAgICAgICAgZmxvYXQgc2NhbGVT
cXJ0SGFsZiA9IHNxcnRmKDAuNSk7CiAKLSAgICAgICAgdmFkZChzb3VyY2VMLCAxLCBkZXN0aW5h
dGlvbkwsIDEsIGRlc3RpbmF0aW9uTCwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJj
ZUMsIDEsICZzY2FsZVNxcnRIYWxmLCBkZXN0aW5hdGlvbkwsIDEsIGxlbmd0aCgpKTsKLSAgICAg
ICAgdnNtYShzb3VyY2VTTCwgMSwgJnNjYWxlU3FydEhhbGYsIGRlc3RpbmF0aW9uTCwgMSwgbGVu
Z3RoKCkpOwotICAgICAgICB2YWRkKHNvdXJjZVIsIDEsIGRlc3RpbmF0aW9uUiwgMSwgZGVzdGlu
YXRpb25SLCAxLCBsZW5ndGgoKSk7Ci0gICAgICAgIHZzbWEoc291cmNlQywgMSwgJnNjYWxlU3Fy
dEhhbGYsIGRlc3RpbmF0aW9uUiwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJjZVNS
LCAxLCAmc2NhbGVTcXJ0SGFsZiwgZGVzdGluYXRpb25SLCAxLCBsZW5ndGgoKSk7CisgICAgICAg
IFZlY3Rvck1hdGg6OmFkZChzb3VyY2VMLCBkZXN0aW5hdGlvbkwsIGRlc3RpbmF0aW9uTCwgbGVu
Z3RoKCkpOworICAgICAgICBWZWN0b3JNYXRoOjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNl
Qywgc2NhbGVTcXJ0SGFsZiwgZGVzdGluYXRpb25MLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rv
ck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VTTCwgc2NhbGVTcXJ0SGFsZiwgZGVz
dGluYXRpb25MLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6OmFkZChzb3VyY2VSLCBk
ZXN0aW5hdGlvblIsIGRlc3RpbmF0aW9uUiwgbGVuZ3RoKCkpOworICAgICAgICBWZWN0b3JNYXRo
OjptdWx0aXBseVRoZW5BZGRTY2FsYXIoc291cmNlQywgc2NhbGVTcXJ0SGFsZiwgZGVzdGluYXRp
b25SLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxh
cihzb3VyY2VTUiwgc2NhbGVTcXJ0SGFsZiwgZGVzdGluYXRpb25SLCBsZW5ndGgoKSk7CiAgICAg
fSBlbHNlIGlmIChudW1iZXJPZlNvdXJjZUNoYW5uZWxzID09IDYgJiYgbnVtYmVyT2ZEZXN0aW5h
dGlvbkNoYW5uZWxzID09IDQpIHsKICAgICAgICAgLy8gRG93bi1taXhpbmc6IDUuMSAtPiA0CiAg
ICAgICAgIC8vIG91dHB1dC5MID0gaW5wdXQuTCArIHNxcnQoMS8yKSAqIGlucHV0LkMKQEAgLTQw
NiwxMCArNDAwLDEwIEBAIHZvaWQgQXVkaW9CdXM6OnNwZWFrZXJzU3VtRnJvbUJ5RG93bk1peGlu
Zyhjb25zdCBBdWRpb0J1cyYgc291cmNlQnVzKQogICAgICAgICBhdXRvKiBkZXN0aW5hdGlvblIg
PSBjaGFubmVsQnlUeXBlKENoYW5uZWxSaWdodCktPm11dGFibGVEYXRhKCk7CiAgICAgICAgIGF1
dG8gc2NhbGVTcXJ0SGFsZiA9IHNxcnRmKDAuNSk7CiAKLSAgICAgICAgdmFkZChzb3VyY2VMLCAx
LCBkZXN0aW5hdGlvbkwsIDEsIGRlc3RpbmF0aW9uTCwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2
c21hKHNvdXJjZUMsIDEsICZzY2FsZVNxcnRIYWxmLCBkZXN0aW5hdGlvbkwsIDEsIGxlbmd0aCgp
KTsKLSAgICAgICAgdmFkZChzb3VyY2VSLCAxLCBkZXN0aW5hdGlvblIsIDEsIGRlc3RpbmF0aW9u
UiwgMSwgbGVuZ3RoKCkpOwotICAgICAgICB2c21hKHNvdXJjZUMsIDEsICZzY2FsZVNxcnRIYWxm
LCBkZXN0aW5hdGlvblIsIDEsIGxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6YWRkKHNv
dXJjZUwsIGRlc3RpbmF0aW9uTCwgZGVzdGluYXRpb25MLCBsZW5ndGgoKSk7CisgICAgICAgIFZl
Y3Rvck1hdGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VDLCBzY2FsZVNxcnRIYWxmLCBk
ZXN0aW5hdGlvbkwsIGxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6YWRkKHNvdXJjZVIs
IGRlc3RpbmF0aW9uUiwgZGVzdGluYXRpb25SLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1h
dGg6Om11bHRpcGx5VGhlbkFkZFNjYWxhcihzb3VyY2VDLCBzY2FsZVNxcnRIYWxmLCBkZXN0aW5h
dGlvblIsIGxlbmd0aCgpKTsKICAgICAgICAgY2hhbm5lbCgyKS0+c3VtRnJvbShzb3VyY2VCdXMu
Y2hhbm5lbCg0KSk7CiAgICAgICAgIGNoYW5uZWwoMyktPnN1bUZyb20oc291cmNlQnVzLmNoYW5u
ZWwoNSkpOwogICAgIH0gZWxzZSB7CkBAIC00NzYsNyArNDcwLDcgQEAgdm9pZCBBdWRpb0J1czo6
Y29weVdpdGhHYWluRnJvbShjb25zdCBBdWRpb0J1cyYgc291cmNlQnVzLCBmbG9hdCBnYWluKQog
ICAgICAgICAgICAgbWVtc2V0KGRlc3RpbmF0aW9uc1tjaGFubmVsSW5kZXhdLCAwLCBmcmFtZXNU
b1Byb2Nlc3MgKiBzaXplb2YoKmRlc3RpbmF0aW9uc1tjaGFubmVsSW5kZXhdKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5k
ZXggPCBudW1iZXJPZkNoYW5uZWxzOyArK2NoYW5uZWxJbmRleCkKLSAgICAgICAgICAgIHZzbXVs
KHNvdXJjZXNbY2hhbm5lbEluZGV4XSwgMSwgJmdhaW4sIGRlc3RpbmF0aW9uc1tjaGFubmVsSW5k
ZXhdLCAxLCBmcmFtZXNUb1Byb2Nlc3MpOworICAgICAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlw
bHlCeVNjYWxhcihzb3VyY2VzW2NoYW5uZWxJbmRleF0sIGdhaW4sIGRlc3RpbmF0aW9uc1tjaGFu
bmVsSW5kZXhdLCBmcmFtZXNUb1Byb2Nlc3MpOwogICAgIH0KIH0KIApAQCAtNTA1LDcgKzQ5OSw3
IEBAIHZvaWQgQXVkaW9CdXM6OmNvcHlXaXRoU2FtcGxlQWNjdXJhdGVHYWluVmFsdWVzRnJvbShj
b25zdCBBdWRpb0J1cyAmc291cmNlQnVzLCBmCiAgICAgICAgIGlmIChzb3VyY2VCdXMubnVtYmVy
T2ZDaGFubmVscygpID09IG51bWJlck9mQ2hhbm5lbHMoKSkKICAgICAgICAgICAgIHNvdXJjZSA9
IHNvdXJjZUJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCktPmRhdGEoKTsKICAgICAgICAgZmxvYXQq
IGRlc3RpbmF0aW9uID0gY2hhbm5lbChjaGFubmVsSW5kZXgpLT5tdXRhYmxlRGF0YSgpOwotICAg
ICAgICB2bXVsKHNvdXJjZSwgMSwgZ2FpblZhbHVlcywgMSwgZGVzdGluYXRpb24sIDEsIG51bWJl
ck9mR2FpblZhbHVlcyk7CisgICAgICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5KHNvdXJjZSwgZ2Fp
blZhbHVlcywgZGVzdGluYXRpb24sIG51bWJlck9mR2FpblZhbHVlcyk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9DaGFubmVsLmNwcAppbmRleCA5
MDk1Y2Y0NzM4NzJlMDIwYTlmNmU3Y2VlMzVmM2EwMjk0OGE2YjljLi5mZDljY2FkMDcwNTUzMzM4
MWJlYWFmZjhlNzQ3YzE3ZTM2OTY0ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb0NoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKLQogdm9pZCBBdWRpb0NoYW5u
ZWw6OnJlc2l6ZVNtYWxsZXIoc2l6ZV90IG5ld0xlbmd0aCkKIHsKICAgICBBU1NFUlQobmV3TGVu
Z3RoIDw9IG1fbGVuZ3RoKTsKQEAgLTUyLDcgKzUwLDcgQEAgdm9pZCBBdWRpb0NoYW5uZWw6OnNj
YWxlKGZsb2F0IHNjYWxlKQogICAgIGlmIChpc1NpbGVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB2c211bChkYXRhKCksIDEsICZzY2FsZSwgbXV0YWJsZURhdGEoKSwgMSwgbGVuZ3RoKCkp
OworICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIoZGF0YSgpLCBzY2FsZSwgbXV0YWJs
ZURhdGEoKSwgbGVuZ3RoKCkpOwogfQogCiB2b2lkIEF1ZGlvQ2hhbm5lbDo6Y29weUZyb20oY29u
c3QgQXVkaW9DaGFubmVsKiBzb3VyY2VDaGFubmVsKQpAQCAtMTEwLDcgKzEwOCw3IEBAIHZvaWQg
QXVkaW9DaGFubmVsOjpzdW1Gcm9tKGNvbnN0IEF1ZGlvQ2hhbm5lbCogc291cmNlQ2hhbm5lbCkK
ICAgICBpZiAoaXNTaWxlbnQoKSkKICAgICAgICAgY29weUZyb20oc291cmNlQ2hhbm5lbCk7CiAg
ICAgZWxzZQotICAgICAgICB2YWRkKGRhdGEoKSwgMSwgc291cmNlQ2hhbm5lbC0+ZGF0YSgpLCAx
LCBtdXRhYmxlRGF0YSgpLCAxLCBsZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvck1hdGg6OmFkZChk
YXRhKCksIHNvdXJjZUNoYW5uZWwtPmRhdGEoKSwgbXV0YWJsZURhdGEoKSwgbGVuZ3RoKCkpOwog
fQogCiBmbG9hdCBBdWRpb0NoYW5uZWw6Om1heEFic1ZhbHVlKCkgY29uc3QKQEAgLTExOCwxMSAr
MTE2LDcgQEAgZmxvYXQgQXVkaW9DaGFubmVsOjptYXhBYnNWYWx1ZSgpIGNvbnN0CiAgICAgaWYg
KGlzU2lsZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZmxvYXQgbWF4ID0gMDsKLQot
ICAgIHZtYXhtZ3YoZGF0YSgpLCAxLCAmbWF4LCBsZW5ndGgoKSk7Ci0KLSAgICByZXR1cm4gbWF4
OworICAgIHJldHVybiBWZWN0b3JNYXRoOjptYXhpbXVtTWFnbml0dWRlKGRhdGEoKSwgbGVuZ3Ro
KCkpOwogfQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9EaXJlY3RDb252b2x2ZXIuY3BwCmluZGV4IGNhZWNhMTVmYmNlZmM3ODFhZGE2OGUyOTk4
NDFjZWExMWJlYjQ2M2UuLmQ2OTg3OWUzZTE0ZDcyY2FkZjEzYzBmNDc2MDIyZDExZTEzY2I1ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0RpcmVjdENvbnZvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRGlyZWN0Q29udm9sdmVy
LmNwcApAQCAtMzksOCArMzksNiBAQAogI2luY2x1ZGUgIlZlY3Rvck1hdGguaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKICAgICAKIERpcmVj
dENvbnZvbHZlcjo6RGlyZWN0Q29udm9sdmVyKHNpemVfdCBpbnB1dEJsb2NrU2l6ZSkKICAgICA6
IG1faW5wdXRCbG9ja1NpemUoaW5wdXRCbG9ja1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZUQ29udm9sdmVyLmNwcAppbmRleCAwYjk3YmUzNTM2MTNiZDA5ZjZiNjcx
MWQ1ZTgxZGJlNjk3ZTA3YzU2Li44MTY3ZjFkZjgwMGVjNDNlNzU0ZGZkOTk0YjBjNzUyMTllMTQ3
MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRDb252b2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVENvbnZvbHZlci5j
cHAKQEAgLTM1LDggKzM1LDYgQEAKICNpbmNsdWRlICJWZWN0b3JNYXRoLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotdXNpbmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7CiAgICAgCiBGRlRDb252
b2x2ZXI6OkZGVENvbnZvbHZlcihzaXplX3QgZmZ0U2l6ZSkKICAgICA6IG1fZnJhbWUoZmZ0U2l6
ZSkKQEAgLTkyLDcgKzkwLDcgQEAgdm9pZCBGRlRDb252b2x2ZXI6OnByb2Nlc3MoRkZURnJhbWUq
IGZmdEtlcm5lbCwgY29uc3QgZmxvYXQqIHNvdXJjZVAsIGZsb2F0KiBkZXMKICAgICAgICAgICAg
IG1fZnJhbWUuZG9JbnZlcnNlRkZUKG1fb3V0cHV0QnVmZmVyLmRhdGEoKSk7CiAKICAgICAgICAg
ICAgIC8vIE92ZXJsYXAtYWRkIDFzdCBoYWxmIGZyb20gcHJldmlvdXMgdGltZQotICAgICAgICAg
ICAgdmFkZChtX291dHB1dEJ1ZmZlci5kYXRhKCksIDEsIG1fbGFzdE92ZXJsYXBCdWZmZXIuZGF0
YSgpLCAxLCBtX291dHB1dEJ1ZmZlci5kYXRhKCksIDEsIGhhbGZTaXplKTsKKyAgICAgICAgICAg
IFZlY3Rvck1hdGg6OmFkZChtX291dHB1dEJ1ZmZlci5kYXRhKCksIG1fbGFzdE92ZXJsYXBCdWZm
ZXIuZGF0YSgpLCBtX291dHB1dEJ1ZmZlci5kYXRhKCksIGhhbGZTaXplKTsKIAogICAgICAgICAg
ICAgLy8gRmluYWxseSwgc2F2ZSAybmQgaGFsZiBvZiByZXN1bHQKICAgICAgICAgICAgIGJvb2wg
aXNDb3B5R29vZDMgPSBtX291dHB1dEJ1ZmZlci5zaXplKCkgPT0gMiAqIGhhbGZTaXplICYmIG1f
bGFzdE92ZXJsYXBCdWZmZXIuc2l6ZSgpID09IGhhbGZTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vRkZURnJhbWUuY3BwCmluZGV4IDlhM2MzMTcyZTgwNDY4NzMwYjI5MDk4ZDJk
YjZjZmQ1MTZjODNhZTcuLmI2OWE4MWE5ZjBhMjA1OTMxMzNiNmY4NTc4NjM2NDZlMzA2ZjY4ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKQEAgLTE3NSw4
ICsxNzUsOCBAQCB2b2lkIEZGVEZyYW1lOjppbnRlcnBvbGF0ZUZyZXF1ZW5jeUNvbXBvbmVudHMo
Y29uc3QgRkZURnJhbWUmIGZyYW1lMSwgY29uc3QgRkZURgogCiB2b2lkIEZGVEZyYW1lOjpzY2Fs
ZUZGVChmbG9hdCBmYWN0b3IpCiB7Ci0gICAgVmVjdG9yTWF0aDo6dnNtdWwocmVhbERhdGEoKSwg
MSwgJmZhY3RvciwgcmVhbERhdGEoKSwgMSwgZmZ0U2l6ZSgpKTsKLSAgICBWZWN0b3JNYXRoOjp2
c211bChpbWFnRGF0YSgpLCAxLCAmZmFjdG9yLCBpbWFnRGF0YSgpLCAxLCBmZnRTaXplKCkpOwor
ICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIocmVhbERhdGEoKSwgZmFjdG9yLCByZWFs
RGF0YSgpLCBmZnRTaXplKCkpOworICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIoaW1h
Z0RhdGEoKSwgZmFjdG9yLCBpbWFnRGF0YSgpLCBmZnRTaXplKCkpOwogfQogCiB2b2lkIEZGVEZy
YW1lOjptdWx0aXBseShjb25zdCBGRlRGcmFtZSYgZnJhbWUpCkBAIC0xOTQsNyArMTk0LDcgQEAg
dm9pZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZyYW1lKQogICAgIGZsb2F0
IGltYWcwID0gaW1hZ1AxWzBdOwogCiAgICAgLy8gQ29tcGxleCBtdWx0aXBseQotICAgIFZlY3Rv
ck1hdGg6Onp2bXVsKHJlYWxQMSwgaW1hZ1AxLCByZWFsUDIsIGltYWdQMiwgcmVhbFAxLCBpbWFn
UDEsIGhhbGZTaXplKTsKKyAgICBWZWN0b3JNYXRoOjptdWx0aXBseUNvbXBsZXgocmVhbFAxLCBp
bWFnUDEsIHJlYWxQMiwgaW1hZ1AyLCByZWFsUDEsIGltYWdQMSwgaGFsZlNpemUpOwogCiAgICAg
Ly8gTXVsdGlwbHkgdGhlIHBhY2tlZCBEQy9ueXF1aXN0IGNvbXBvbmVudAogICAgIHJlYWxQMVsw
XSA9IHJlYWwwICogcmVhbFAyWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vSUlSRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0lJ
UkZpbHRlci5jcHAKaW5kZXggNDEzOTFjMmQ5ZDYyNjU0ZmQ0ZjZjYzc5Nzg5ZTcyNTUyNWViMTUw
MS4uY2U2NDViYWU3ZTM4ZmExZDAxYmQyMTNkOGM3ZGJhMjk2NTk5M2M2MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSUlSRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9JSVJGaWx0ZXIuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAg
ZG91YmxlIElJUkZpbHRlcjo6dGFpbFRpbWUoZG91YmxlIHNhbXBsZVJhdGUsIGJvb2wgaXNGaWx0
ZXJTdGFibGUpCiAKICAgICAvLyBQcm9jZXNzIHRoZSBmaXJzdCBibG9jayBhbmQgZ2V0IHRoZSBt
YXggbWFnbml0dWRlIG9mIHRoZSBvdXRwdXQuCiAgICAgcHJvY2VzcyhpbnB1dC5kYXRhKCksIG91
dHB1dC5kYXRhKCksIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSk7Ci0gICAgVmVj
dG9yTWF0aDo6dm1heG1ndihvdXRwdXQuZGF0YSgpLCAxLCAmbWFnbml0dWRlc1swXSwgQXVkaW9V
dGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKKyAgICBtYWduaXR1ZGVzWzBdID0gVmVjdG9y
TWF0aDo6bWF4aW11bU1hZ25pdHVkZShvdXRwdXQuZGF0YSgpLCBBdWRpb1V0aWxpdGllczo6cmVu
ZGVyUXVhbnR1bVNpemUpOwogCiAgICAgLy8gUHJvY2VzcyB0aGUgcmVzdCBvZiB0aGUgc2lnbmFs
LCBnZXR0aW5nIHRoZSBtYXggbWFnbml0dWRlIG9mIHRoZQogICAgIC8vIG91dHB1dCBmb3IgZWFj
aCBibG9jay4KQEAgLTIwOSw3ICsyMDksNyBAQCBkb3VibGUgSUlSRmlsdGVyOjp0YWlsVGltZShk
b3VibGUgc2FtcGxlUmF0ZSwgYm9vbCBpc0ZpbHRlclN0YWJsZSkKIAogICAgIGZvciAoaW50IGsg
PSAxOyBrIDwgbnVtYmVyT2ZCbG9ja3M7ICsraykgewogICAgICAgICBwcm9jZXNzKGlucHV0LmRh
dGEoKSwgb3V0cHV0LmRhdGEoKSwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsK
LSAgICAgICAgVmVjdG9yTWF0aDo6dm1heG1ndihvdXRwdXQuZGF0YSgpLCAxLCAmbWFnbml0dWRl
c1trXSwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKKyAgICAgICAgbWFnbml0
dWRlc1trXSA9IFZlY3Rvck1hdGg6Om1heGltdW1NYWduaXR1ZGUob3V0cHV0LmRhdGEoKSwgQXVk
aW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplKTsKICAgICB9CiAKICAgICAvLyBEb25lIGNv
bXB1dGluZyB0aGUgaW1wdWxzZSByZXNwb25zZTsgcmVzZXQgdGhlIHN0YXRlIHNvIHRoZSBhY3R1
YWwgbm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5jcHAKaW5kZXggMDdm
ZjIyODIzYzBjMzhhMDJlN2I3NTlkODJiOTM4NTJjYTU2ZTZlYS4uY2EwY2VhMGUwY2NiYmYwZGI5
MDRlYWM1MGUxN2YxNDc4YWEwMDg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUmV2ZXJiLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9S
ZXZlcmIuY3BwCkBAIC00MSw4ICs0MSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNp
bmcgbmFtZXNwYWNlIFZlY3Rvck1hdGg7Ci0KIC8vIEVtcGlyaWNhbCBnYWluIGNhbGlicmF0aW9u
IHRlc3RlZCBhY3Jvc3MgbWFueSBpbXB1bHNlIHJlc3BvbnNlcyB0byBlbnN1cmUgcGVyY2VpdmVk
IHZvbHVtZSBpcyBzYW1lIGFzIGRyeSAodW5wcm9jZXNzZWQpIHNpZ25hbAogY29uc3RleHByIGZs
b2F0IEdhaW5DYWxpYnJhdGlvbiA9IC01ODsKIGNvbnN0ZXhwciBmbG9hdCBHYWluQ2FsaWJyYXRp
b25TYW1wbGVSYXRlID0gNDQxMDA7CkBAIC01OCwxMSArNTYsOCBAQCBzdGF0aWMgZmxvYXQgY2Fs
Y3VsYXRlTm9ybWFsaXphdGlvblNjYWxlKEF1ZGlvQnVzKiByZXNwb25zZSkKIAogICAgIGZsb2F0
IHBvd2VyID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVs
czsgKytpKSB7Ci0gICAgICAgIGZsb2F0IGNoYW5uZWxQb3dlciA9IDA7Ci0gICAgICAgIHZzdmVz
cShyZXNwb25zZS0+Y2hhbm5lbChpKS0+ZGF0YSgpLCAxLCAmY2hhbm5lbFBvd2VyLCBsZW5ndGgp
OwotICAgICAgICBwb3dlciArPSBjaGFubmVsUG93ZXI7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZDaGFubmVsczsgKytpKQorICAgICAgICBwb3dlciArPSBWZWN0
b3JNYXRoOjpzdW1PZlNxdWFyZXMocmVzcG9uc2UtPmNoYW5uZWwoaSktPmRhdGEoKSwgbGVuZ3Ro
KTsKIAogICAgIHBvd2VyID0gc3FydChwb3dlciAvIChudW1iZXJPZkNoYW5uZWxzICogbGVuZ3Ro
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFj
Y3VtdWxhdGlvbkJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZl
cmJBY2N1bXVsYXRpb25CdWZmZXIuY3BwCmluZGV4IDk0MjZmMzg3MGY5NjdlNmNhM2M5YzdmMmI4
NDNmNGY0NGI1ZWZmNjcuLjMyYWJiYmI3ZmMwMTNkZGU3ZjBhYTI1MWI2MWNjYzZjYjYwOTg5MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkFjY3VtdWxh
dGlvbkJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJi
QWNjdW11bGF0aW9uQnVmZmVyLmNwcApAQCAtMzgsOCArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBWZWN0b3JNYXRoOwotCiBSZXZlcmJBY2N1bXVsYXRp
b25CdWZmZXI6OlJldmVyYkFjY3VtdWxhdGlvbkJ1ZmZlcihzaXplX3QgbGVuZ3RoKQogICAgIDog
bV9idWZmZXIobGVuZ3RoKQogewpAQCAtOTgsMTEgKzk2LDExIEBAIGludCBSZXZlcmJBY2N1bXVs
YXRpb25CdWZmZXI6OmFjY3VtdWxhdGUoZmxvYXQqIHNvdXJjZSwgc2l6ZV90IG51bWJlck9mRnJh
bWVzLCBpCiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdmFkZChz
b3VyY2UsIDEsIGRlc3RpbmF0aW9uICsgd3JpdGVJbmRleCwgMSwgZGVzdGluYXRpb24gKyB3cml0
ZUluZGV4LCAxLCBudW1iZXJPZkZyYW1lczEpOworICAgIFZlY3Rvck1hdGg6OmFkZChzb3VyY2Us
IGRlc3RpbmF0aW9uICsgd3JpdGVJbmRleCwgZGVzdGluYXRpb24gKyB3cml0ZUluZGV4LCBudW1i
ZXJPZkZyYW1lczEpOwogCiAgICAgLy8gSGFuZGxlIHdyYXAtYXJvdW5kIGlmIG5lY2Vzc2FyeQog
ICAgIGlmIChudW1iZXJPZkZyYW1lczIgPiAwKSAgICAgICAKLSAgICAgICAgdmFkZChzb3VyY2Ug
KyBudW1iZXJPZkZyYW1lczEsIDEsIGRlc3RpbmF0aW9uLCAxLCBkZXN0aW5hdGlvbiwgMSwgbnVt
YmVyT2ZGcmFtZXMyKTsKKyAgICAgICAgVmVjdG9yTWF0aDo6YWRkKHNvdXJjZSArIG51bWJlck9m
RnJhbWVzMSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uLCBudW1iZXJPZkZyYW1lczIpOwogCiAg
ICAgcmV0dXJuIHdyaXRlSW5kZXg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCA4ZDgxYjAwN2Y3OWVjOTIyOGRiY2M1Nzcw
YmNmZDU2YzEwNzVhYTkzLi4yNzljYWVjYjcyZDhhNDUyOWEzZDIyM2E0YWZkYzk4MTc0MjNjYzRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5jcHAKQEAgLTM4LDggKzM4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBu
YW1lc3BhY2UgVmVjdG9yTWF0aDsKLQogY29uc3RleHByIGludCBJbnB1dEJ1ZmZlclNpemUgPSA4
ICogMTYzODQ7CiAKIC8vIFdlIG9ubHkgcHJvY2VzcyB0aGUgbGVhZGluZyBwb3J0aW9uIG9mIHRo
ZSBpbXB1bHNlIHJlc3BvbnNlIGluIHRoZSByZWFsLXRpbWUgdGhyZWFkLiAgV2UgZG9uJ3QgZXhj
ZWVkIHRoaXMgbGVuZ3RoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUmV2ZXJiQ29udm9sdmVyU3RhZ2UuY3BwCmluZGV4IDgzNmI0MTZhZDI5ZDk3NzIyNDcyMTBm
ODBjMWI2NGExYzg2YWNhNDQuLjZiODIyMmVlN2I3YTYyOTlmOGY3MDE1Yjk0NTcyMGU5NDU2NTcz
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlclN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJD
b252b2x2ZXJTdGFnZS5jcHAKQEAgLTQyLDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi11c2luZyBuYW1lc3BhY2UgVmVjdG9yTWF0aDsKLQogUmV2ZXJiQ29udm9sdmVyU3RhZ2U6
OlJldmVyYkNvbnZvbHZlclN0YWdlKGNvbnN0IGZsb2F0KiBpbXB1bHNlUmVzcG9uc2UsIHNpemVf
dCwgc2l6ZV90IHJldmVyYlRvdGFsTGF0ZW5jeSwgc2l6ZV90IHN0YWdlT2Zmc2V0LCBzaXplX3Qg
c3RhZ2VMZW5ndGgsCiAgICAgc2l6ZV90IGZmdFNpemUsIHNpemVfdCByZW5kZXJQaGFzZSwgc2l6
ZV90IHJlbmRlclNsaWNlU2l6ZSwgUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyKiBhY2N1bXVsYXRp
b25CdWZmZXIsIGZsb2F0IHNjYWxlLCBib29sIGRpcmVjdE1vZGUpCiAgICAgOiBtX2FjY3VtdWxh
dGlvbkJ1ZmZlcihhY2N1bXVsYXRpb25CdWZmZXIpCkBAIC03MCw3ICs2OCw3IEBAIFJldmVyYkNv
bnZvbHZlclN0YWdlOjpSZXZlcmJDb252b2x2ZXJTdGFnZShjb25zdCBmbG9hdCogaW1wdWxzZVJl
c3BvbnNlLCBzaXplX3QsCiAgICAgICAgIG1fZGlyZWN0S2VybmVsLT5jb3B5VG9SYW5nZShpbXB1
bHNlUmVzcG9uc2UsIDAsIHN0YWdlTGVuZ3RoKTsKICAgICAgICAgLy8gQWNjb3VudCBmb3IgdGhl
IG5vcm1hbGl6YXRpb24gKGlmIGFueSkgb2YgdGhlIGNvbnZvbHZlciBub2RlLgogICAgICAgICBp
ZiAoc2NhbGUgIT0gMSkKLSAgICAgICAgICAgIFZlY3Rvck1hdGg6OnZzbXVsKG1fZGlyZWN0S2Vy
bmVsLT5kYXRhKCksIDEsICZzY2FsZSwgbV9kaXJlY3RLZXJuZWwtPmRhdGEoKSwgMSwgc3RhZ2VM
ZW5ndGgpOworICAgICAgICAgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihtX2RpcmVj
dEtlcm5lbC0+ZGF0YSgpLCBzY2FsZSwgbV9kaXJlY3RLZXJuZWwtPmRhdGEoKSwgc3RhZ2VMZW5n
dGgpOwogICAgICAgICBtX2RpcmVjdENvbnZvbHZlciA9IG1ha2VVbmlxdWU8RGlyZWN0Q29udm9s
dmVyPihyZW5kZXJTbGljZVNpemUpOwogICAgIH0KICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hbGxv
Y2F0ZShyZW5kZXJTbGljZVNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9W
ZWN0b3JNYXRoLmNwcAppbmRleCBmOWM5MmRiYjRmNzZmOWQyM2MzNTEyZmIxNDZmZjM3NjI2YWVk
ZmZiLi5lNGM4Y2FiZmZiM2Q2ZGM5MGIzYTZhZDQxZmU1N2YyNmRkYmRhYTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTEsMjcgKzUyLDI3IEBAIG5h
bWVzcGFjZSBWZWN0b3JNYXRoIHsKICNpZiBVU0UoQUNDRUxFUkFURSkKIC8vIE9uIHRoZSBNYWMg
d2UgdXNlIHRoZSBoaWdobHkgb3B0aW1pemVkIHZlcnNpb25zIGluIEFjY2VsZXJhdGUuZnJhbWV3
b3JrCiAKLXZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJp
ZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIG91dHB1dFZlY3RvciwgaW50IG91dHB1dFN0
cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCit2b2lkIG11bHRpcGx5QnlT
Y2FsYXIoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBmbG9hdCBzY2FsZSwgZmxvYXQqIG91dHB1
dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCiB7Ci0gICAgdkRTUF92
c211bChpbnB1dFZlY3RvciwgaW5wdXRTdHJpZGUsIHNjYWxlLCBvdXRwdXRWZWN0b3IsIG91dHB1
dFN0cmlkZSwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CisgICAgdkRTUF92c211bChpbnB1
dFZlY3RvciwgMSwgJnNjYWxlLCBvdXRwdXRWZWN0b3IsIDEsIG51bWJlck9mRWxlbWVudHNUb1By
b2Nlc3MpOwogfQogCi12b2lkIHZhZGQoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMSwgaW50IGlu
cHV0U3RyaWRlMSwgY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMiwgaW50IGlucHV0U3RyaWRlMiwg
ZmxvYXQqIG91dHB1dFZlY3RvciwgaW50IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxl
bWVudHNUb1Byb2Nlc3MpCit2b2lkIGFkZChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IxLCBjb25z
dCBmbG9hdCogaW5wdXRWZWN0b3IyLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBzaXplX3QgbnVtYmVy
T2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKLSAgICB2RFNQX3ZhZGQoaW5wdXRWZWN0b3IxLCBpbnB1
dFN0cmlkZTEsIGlucHV0VmVjdG9yMiwgaW5wdXRTdHJpZGUyLCBvdXRwdXRWZWN0b3IsIG91dHB1
dFN0cmlkZSwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CisgICAgdkRTUF92YWRkKGlucHV0
VmVjdG9yMSwgMSwgaW5wdXRWZWN0b3IyLCAxLCBvdXRwdXRWZWN0b3IsIDEsIG51bWJlck9mRWxl
bWVudHNUb1Byb2Nlc3MpOwogfQogCi12b2lkIHZzYWRkKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3Rv
ciwgaW50IGlucHV0U3RyaWRlLCBjb25zdCBmbG9hdCogc2NhbGFyLCBmbG9hdCogb3V0cHV0VmVj
dG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykK
K3ZvaWQgYWRkU2NhbGFyKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgc2NhbGFyLCBm
bG9hdCogb3V0cHV0VmVjdG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKIHsK
LSAgICB2RFNQX3ZzYWRkKGlucHV0VmVjdG9yLCBpbnB1dFN0cmlkZSwgc2NhbGFyLCBvdXRwdXRW
ZWN0b3IsIG91dHB1dFN0cmlkZSwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CisgICAgdkRT
UF92c2FkZChpbnB1dFZlY3RvciwgMSwgJnNjYWxhciwgb3V0cHV0VmVjdG9yLCAxLCBudW1iZXJP
ZkVsZW1lbnRzVG9Qcm9jZXNzKTsKIH0KIAotdm9pZCB2bXVsKGNvbnN0IGZsb2F0KiBpbnB1dFZl
Y3RvcjEsIGludCBpbnB1dFN0cmlkZTEsIGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjIsIGludCBp
bnB1dFN0cmlkZTIsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIGludCBvdXRwdXRTdHJpZGUsIHNpemVf
dCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQordm9pZCBtdWx0aXBseShjb25zdCBmbG9hdCog
aW5wdXRWZWN0b3IxLCBjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IyLCBmbG9hdCogb3V0cHV0VmVj
dG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKLSAgICB2RFNQX3ZtdWwo
aW5wdXRWZWN0b3IxLCBpbnB1dFN0cmlkZTEsIGlucHV0VmVjdG9yMiwgaW5wdXRTdHJpZGUyLCBv
dXRwdXRWZWN0b3IsIG91dHB1dFN0cmlkZSwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7Cisg
ICAgdkRTUF92bXVsKGlucHV0VmVjdG9yMSwgMSwgaW5wdXRWZWN0b3IyLCAxLCBvdXRwdXRWZWN0
b3IsIDEsIG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwogfQogCi12b2lkIHp2bXVsKGNvbnN0
IGZsb2F0KiByZWFsVmVjdG9yMSwgY29uc3QgZmxvYXQqIGltYWdWZWN0b3IxLCBjb25zdCBmbG9h
dCogcmVhbFZlY3RvcjIsIGNvbnN0IGZsb2F0KiBpbWFnMlAsIGZsb2F0KiByZWFsT3V0cHV0VmVj
dG9yLCBmbG9hdCogaW1hZ0Rlc3RQLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykK
K3ZvaWQgbXVsdGlwbHlDb21wbGV4KGNvbnN0IGZsb2F0KiByZWFsVmVjdG9yMSwgY29uc3QgZmxv
YXQqIGltYWdWZWN0b3IxLCBjb25zdCBmbG9hdCogcmVhbFZlY3RvcjIsIGNvbnN0IGZsb2F0KiBp
bWFnMlAsIGZsb2F0KiByZWFsT3V0cHV0VmVjdG9yLCBmbG9hdCogaW1hZ0Rlc3RQLCBzaXplX3Qg
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKICAgICBEU1BTcGxpdENvbXBsZXggc2MxOwog
ICAgIERTUFNwbGl0Q29tcGxleCBzYzI7CkBAIC04NSw0NjQgKzg2LDQxMCBAQCB2b2lkIHp2bXVs
KGNvbnN0IGZsb2F0KiByZWFsVmVjdG9yMSwgY29uc3QgZmxvYXQqIGltYWdWZWN0b3IxLCBjb25z
dCBmbG9hdCogcmVhbAogICAgIHZEU1BfenZtdWwoJnNjMSwgMSwgJnNjMiwgMSwgJmRlc3QsIDEs
IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MsIDEpOwogfQogCi12b2lkIHZzbWEoY29uc3QgZmxv
YXQqIGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxv
YXQqIG91dHB1dFZlY3RvciwgaW50IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVu
dHNUb1Byb2Nlc3MpCit2b2lkIG11bHRpcGx5VGhlbkFkZFNjYWxhcihjb25zdCBmbG9hdCogaW5w
dXRWZWN0b3IsIGZsb2F0IHNjYWxlLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBzaXplX3QgbnVtYmVy
T2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKLSAgICB2RFNQX3ZzbWEoaW5wdXRWZWN0b3IsIGlucHV0
U3RyaWRlLCBzY2FsZSwgb3V0cHV0VmVjdG9yLCBvdXRwdXRTdHJpZGUsIG91dHB1dFZlY3Rvciwg
b3V0cHV0U3RyaWRlLCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKKyAgICB2RFNQX3ZzbWEo
aW5wdXRWZWN0b3IsIDEsICZzY2FsZSwgb3V0cHV0VmVjdG9yLCAxLCBvdXRwdXRWZWN0b3IsIDEs
IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwogfQogCi12b2lkIHZtYXhtZ3YoY29uc3QgZmxv
YXQqIGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJpZGUsIGZsb2F0KiBtYXhpbXVtVmFsdWUsIHNp
emVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQorZmxvYXQgbWF4aW11bU1hZ25pdHVkZShj
b25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNz
KQogewotICAgIHZEU1BfbWF4bWd2KGlucHV0VmVjdG9yLCBpbnB1dFN0cmlkZSwgbWF4aW11bVZh
bHVlLCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKKyAgICBmbG9hdCBtYXhpbXVtVmFsdWUg
PSAwOworICAgIHZEU1BfbWF4bWd2KGlucHV0VmVjdG9yLCAxLCAmbWF4aW11bVZhbHVlLCBudW1i
ZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKKyAgICByZXR1cm4gbWF4aW11bVZhbHVlOwogfQogCi12
b2lkIHZzdmVzcShjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0cmlkZSwgZmxv
YXQqIHN1bSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCitmbG9hdCBzdW1PZlNx
dWFyZXMoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1Rv
UHJvY2VzcykKIHsKLSAgICB2RFNQX3N2ZXNxKGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3Rv
ciksIGlucHV0U3RyaWRlLCBzdW0sIG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOworICAgIGZs
b2F0IHN1bSA9IDA7CisgICAgdkRTUF9zdmVzcShjb25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0
b3IpLCAxLCAmc3VtLCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKKyAgICByZXR1cm4gc3Vt
OwogfQogCi12b2lkIHZjbGlwKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgaW50IGlucHV0U3Ry
aWRlLCBjb25zdCBmbG9hdCogbG93VGhyZXNob2xkUCwgY29uc3QgZmxvYXQqIGhpZ2hUaHJlc2hv
bGRQLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3QgbnVtYmVy
T2ZFbGVtZW50c1RvUHJvY2VzcykKK3ZvaWQgY2xhbXAoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9y
LCBmbG9hdCBtaW5pbXVtLCBmbG9hdCBtYXhpbXVtLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBzaXpl
X3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKLSAgICB2RFNQX3ZjbGlwKGNvbnN0X2Nh
c3Q8ZmxvYXQqPihpbnB1dFZlY3RvciksIGlucHV0U3RyaWRlLCBjb25zdF9jYXN0PGZsb2F0Kj4o
bG93VGhyZXNob2xkUCksIGNvbnN0X2Nhc3Q8ZmxvYXQqPihoaWdoVGhyZXNob2xkUCksIG91dHB1
dFZlY3Rvciwgb3V0cHV0U3RyaWRlLCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKKyAgICB2
RFNQX3ZjbGlwKGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvciksIDEsICZtaW5pbXVtLCAm
bWF4aW11bSwgb3V0cHV0VmVjdG9yLCAxLCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKIH0K
IAotdm9pZCBsaW5lYXJUb0RlY2liZWxzKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgaW50IGlu
cHV0U3RyaWRlLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3Qg
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKK3ZvaWQgbGluZWFyVG9EZWNpYmVscyhjb25zdCBm
bG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVs
ZW1lbnRzVG9Qcm9jZXNzKQogewogICAgIGZsb2F0IHJlZmVyZW5jZSA9IDE7Ci0gICAgdkRTUF92
ZGJjb24oaW5wdXRWZWN0b3IsIGlucHV0U3RyaWRlLCAmcmVmZXJlbmNlLCBvdXRwdXRWZWN0b3Is
IG91dHB1dFN0cmlkZSwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcywgMSk7CisgICAgdkRTUF92
ZGJjb24oaW5wdXRWZWN0b3IsIDEsICZyZWZlcmVuY2UsIG91dHB1dFZlY3RvciwgMSwgbnVtYmVy
T2ZFbGVtZW50c1RvUHJvY2VzcywgMSk7CiB9CiAKICNlbHNlCiAKLXZvaWQgdnNtYShjb25zdCBm
bG9hdCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxlLCBm
bG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVt
ZW50c1RvUHJvY2VzcykKK3N0YXRpYyBpbmxpbmUgYm9vbCBpczE2Qnl0ZUFsaWduZWQoY29uc3Qg
ZmxvYXQqIHZlY3RvcikKIHsKLSAgICBpbnQgbiA9IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3M7
Ci0KLSNpZiBDUFUoWDg2X1NTRTIpCi0gICAgaWYgKChpbnB1dFN0cmlkZSA9PSAxKSAmJiAob3V0
cHV0U3RyaWRlID09IDEpKSB7Ci0gICAgICAgIGZsb2F0IGsgPSAqc2NhbGU7Ci0KLSAgICAgICAg
Ly8gSWYgdGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhl
IGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2Vk
IHNlcGFyYXRlbHkuCi0gICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGlucHV0VmVjdG9yKSAmIDB4MEYpICYmIG4pIHsKLSAgICAgICAgICAgICpvdXRwdXRWZWN0b3Ig
Kz0gayAqICppbnB1dFZlY3RvcjsKLSAgICAgICAgICAgIGlucHV0VmVjdG9yKys7Ci0gICAgICAg
ICAgICBvdXRwdXRWZWN0b3IrKzsKLSAgICAgICAgICAgIG4tLTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIE5vdyB0aGUgaW5wdXRWZWN0b3IgaXMgYWxpZ25lZCwgdXNlIFNTRS4KLSAgICAgICAg
aW50IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICAgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRw
dXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKKyAgICByZXR1cm4gIShyZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4odmVjdG9yKSAmIDB4MEYpOworfQogCi0gICAgICAgIF9fbTEyOCBwU291cmNl
OwotICAgICAgICBfX20xMjggZGVzdDsKLSAgICAgICAgX19tMTI4IHRlbXA7Ci0gICAgICAgIF9f
bTEyOCBtU2NhbGUgPSBfbW1fc2V0X3BzMShrKTsKK3ZvaWQgbXVsdGlwbHlUaGVuQWRkU2NhbGFy
KGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgc2NhbGUsIGZsb2F0KiBvdXRwdXRWZWN0
b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQoreworICAgIHNpemVfdCBuID0g
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsKIAotICAgICAgICBib29sIGRlc3RBbGlnbmVkID0g
IShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ob3V0cHV0VmVjdG9yKSAmIDB4MEYpOworI2lm
IENQVShYODZfU1NFMikKKyAgICAvLyBJZiB0aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBub3Qg
MTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUp
IHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KKyAgICB3aGlsZSAoIWlzMTZCeXRlQWxp
Z25lZChpbnB1dFZlY3RvcikgJiYgbikgeworICAgICAgICAqb3V0cHV0VmVjdG9yICs9IHNjYWxl
ICogKmlucHV0VmVjdG9yOworICAgICAgICBpbnB1dFZlY3RvcisrOworICAgICAgICBvdXRwdXRW
ZWN0b3IrKzsKKyAgICAgICAgbi0tOworICAgIH0KIAotI2RlZmluZSBTU0UyX01VTFRfQUREKGxv
YWRJbnN0ciwgc3RvcmVJbnN0cikgICAgICAgIFwKLSAgICAgICAgICAgIHdoaWxlIChvdXRwdXRW
ZWN0b3IgPCBlbmRQKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBwU291cmNl
ID0gX21tX2xvYWRfcHMoaW5wdXRWZWN0b3IpOyAgICAgXAotICAgICAgICAgICAgICAgIHRlbXAg
PSBfbW1fbXVsX3BzKHBTb3VyY2UsIG1TY2FsZSk7IFwKLSAgICAgICAgICAgICAgICBkZXN0ID0g
X21tXyMjbG9hZEluc3RyIyNfcHMob3V0cHV0VmVjdG9yKTsgXAotICAgICAgICAgICAgICAgIGRl
c3QgPSBfbW1fYWRkX3BzKGRlc3QsIHRlbXApOyAgICAgIFwKLSAgICAgICAgICAgICAgICBfbW1f
IyNzdG9yZUluc3RyIyNfcHMob3V0cHV0VmVjdG9yLCBkZXN0KTsgXAotICAgICAgICAgICAgICAg
IGlucHV0VmVjdG9yICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg
ICAgb3V0cHV0VmVjdG9yICs9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
ICAgIH0KKyAgICAvLyBOb3cgdGhlIGlucHV0VmVjdG9yIGlzIGFsaWduZWQsIHVzZSBTU0UuCisg
ICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91
dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOworCisgICAgX19tMTI4IHBTb3VyY2U7CisgICAg
X19tMTI4IGRlc3Q7CisgICAgX19tMTI4IHRlbXA7CisgICAgX19tMTI4IG1TY2FsZSA9IF9tbV9z
ZXRfcHMxKHNjYWxlKTsKKworICAgIGJvb2wgZGVzdEFsaWduZWQgPSBpczE2Qnl0ZUFsaWduZWQo
b3V0cHV0VmVjdG9yKTsKKworI2RlZmluZSBTU0UyX01VTFRfQUREKGxvYWRJbnN0ciwgc3RvcmVJ
bnN0cikgICAgICAgXAorICAgIHdoaWxlIChvdXRwdXRWZWN0b3IgPCBlbmRQKSAgICAgICAgICAg
ICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBwU291cmNlID0gX21tX2xvYWRfcHMoaW5wdXRWZWN0b3IpOyAgICAg
ICAgXAorICAgICAgICB0ZW1wID0gX21tX211bF9wcyhwU291cmNlLCBtU2NhbGUpOyAgICAgICAg
XAorICAgICAgICBkZXN0ID0gX21tXyMjbG9hZEluc3RyIyNfcHMob3V0cHV0VmVjdG9yKTsgXAor
ICAgICAgICBkZXN0ID0gX21tX2FkZF9wcyhkZXN0LCB0ZW1wKTsgICAgICAgICAgICAgXAorICAg
ICAgICBfbW1fIyNzdG9yZUluc3RyIyNfcHMob3V0cHV0VmVjdG9yLCBkZXN0KTsgXAorICAgICAg
ICBpbnB1dFZlY3RvciArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBv
dXRwdXRWZWN0b3IgKz0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KIAotICAg
ICAgICBpZiAoZGVzdEFsaWduZWQpIAotICAgICAgICAgICAgU1NFMl9NVUxUX0FERChsb2FkLCBz
dG9yZSkKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIFNTRTJfTVVMVF9BREQobG9hZHUsIHN0
b3JldSkKKyAgICBpZiAoZGVzdEFsaWduZWQpCisgICAgICAgIFNTRTJfTVVMVF9BREQobG9hZCwg
c3RvcmUpCisgICAgZWxzZQorICAgICAgICBTU0UyX01VTFRfQUREKGxvYWR1LCBzdG9yZXUpCiAK
LSAgICAgICAgbiA9IHRhaWxGcmFtZXM7Ci0gICAgfQorICAgIG4gPSB0YWlsRnJhbWVzOwogI2Vs
aWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIGlmICgoaW5wdXRTdHJpZGUgPT0gMSkg
JiYgKG91dHB1dFN0cmlkZSA9PSAxKSkgewotICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0
OwotICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJh
bWVzOworICAgIHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7CisgICAgY29uc3QgZmxvYXQqIGVu
ZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKIAotICAgICAgICBmbG9hdDMyeDRf
dCBrID0gdmR1cHFfbl9mMzIoKnNjYWxlKTsKLSAgICAgICAgd2hpbGUgKG91dHB1dFZlY3RvciA8
IGVuZFApIHsKLSAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihpbnB1
dFZlY3Rvcik7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCBkZXN0ID0gdmxkMXFfZjMyKG91dHB1
dFZlY3Rvcik7CisgICAgZmxvYXQzMng0X3QgayA9IHZkdXBxX25fZjMyKHNjYWxlKTsKKyAgICB3
aGlsZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgeworICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2Ug
PSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IpOworICAgICAgICBmbG9hdDMyeDRfdCBkZXN0ID0gdmxk
MXFfZjMyKG91dHB1dFZlY3Rvcik7CiAKLSAgICAgICAgICAgIGRlc3QgPSB2bWxhcV9mMzIoZGVz
dCwgc291cmNlLCBrKTsKLSAgICAgICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0b3IsIGRlc3Qp
OworICAgICAgICBkZXN0ID0gdm1sYXFfZjMyKGRlc3QsIHNvdXJjZSwgayk7CisgICAgICAgIHZz
dDFxX2YzMihvdXRwdXRWZWN0b3IsIGRlc3QpOwogCi0gICAgICAgICAgICBpbnB1dFZlY3RvciAr
PSA0OwotICAgICAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Ci0gICAgICAgIH0KLSAgICAgICAg
biA9IHRhaWxGcmFtZXM7CisgICAgICAgIGlucHV0VmVjdG9yICs9IDQ7CisgICAgICAgIG91dHB1
dFZlY3RvciArPSA0OwogICAgIH0KKyAgICBuID0gdGFpbEZyYW1lczsKICNlbmRpZgotICAgIHdo
aWxlIChuKSB7Ci0gICAgICAgICpvdXRwdXRWZWN0b3IgKz0gKmlucHV0VmVjdG9yICogKnNjYWxl
OwotICAgICAgICBpbnB1dFZlY3RvciArPSBpbnB1dFN0cmlkZTsKLSAgICAgICAgb3V0cHV0VmVj
dG9yICs9IG91dHB1dFN0cmlkZTsKLSAgICAgICAgbi0tOworICAgIHdoaWxlIChuLS0pIHsKKyAg
ICAgICAgKm91dHB1dFZlY3RvciArPSAqaW5wdXRWZWN0b3IgKiBzY2FsZTsKKyAgICAgICAgKytp
bnB1dFZlY3RvcjsKKyAgICAgICAgKytvdXRwdXRWZWN0b3I7CiAgICAgfQogfQogCi12b2lkIHZz
bXVsKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgaW50IGlucHV0U3RyaWRlLCBjb25zdCBmbG9h
dCogc2NhbGUsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIGludCBvdXRwdXRTdHJpZGUsIHNpemVfdCBu
dW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQordm9pZCBtdWx0aXBseUJ5U2NhbGFyKGNvbnN0IGZs
b2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgc2NhbGUsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIHNpemVf
dCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQogewotICAgIGludCBuID0gbnVtYmVyT2ZFbGVt
ZW50c1RvUHJvY2VzczsKKyAgICBzaXplX3QgbiA9IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3M7
CiAKICNpZiBDUFUoWDg2X1NTRTIpCi0gICAgaWYgKChpbnB1dFN0cmlkZSA9PSAxKSAmJiAob3V0
cHV0U3RyaWRlID09IDEpKSB7Ci0gICAgICAgIGZsb2F0IGsgPSAqc2NhbGU7Ci0KLSAgICAgICAg
Ly8gSWYgdGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhl
IGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2Vk
IHNlcGFyYXRlbHkuCi0gICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGlu
cHV0VmVjdG9yKSAmIDB4MEYpICYmIG4pIHsKLSAgICAgICAgICAgICpvdXRwdXRWZWN0b3IgPSBr
ICogKmlucHV0VmVjdG9yOwotICAgICAgICAgICAgaW5wdXRWZWN0b3IrKzsKLSAgICAgICAgICAg
IG91dHB1dFZlY3RvcisrOwotICAgICAgICAgICAgbi0tOwotICAgICAgICB9CisgICAgLy8gSWYg
dGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0
IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGFy
YXRlbHkuCisgICAgd2hpbGUgKCFpczE2Qnl0ZUFsaWduZWQoaW5wdXRWZWN0b3IpICYmIG4pIHsK
KyAgICAgICAgKm91dHB1dFZlY3RvciA9IHNjYWxlICogKmlucHV0VmVjdG9yOworICAgICAgICBp
bnB1dFZlY3RvcisrOworICAgICAgICBvdXRwdXRWZWN0b3IrKzsKKyAgICAgICAgbi0tOworICAg
IH0KIAotICAgICAgICAvLyBOb3cgdGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgYWxpZ25lZCBh
bmQgc3RhcnQgdG8gYXBwbHkgU1NFLgotICAgICAgICBpbnQgZ3JvdXAgPSBuIC8gNDsKLSAgICAg
ICAgX19tMTI4IG1TY2FsZSA9IF9tbV9zZXRfcHMxKGspOwotICAgICAgICBfX20xMjgqIHBTb3Vy
Y2U7Ci0gICAgICAgIF9fbTEyOCogcERlc3Q7Ci0gICAgICAgIF9fbTEyOCBkZXN0OwotCi0KLSAg
ICAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihvdXRwdXRWZWN0b3IpICYgMHgwRikg
ewotICAgICAgICAgICAgd2hpbGUgKGdyb3VwLS0pIHsKLSAgICAgICAgICAgICAgICBwU291cmNl
ID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0
b3IpKTsKLSAgICAgICAgICAgICAgICBkZXN0ID0gX21tX211bF9wcygqcFNvdXJjZSwgbVNjYWxl
KTsKLSAgICAgICAgICAgICAgICBfbW1fc3RvcmV1X3BzKG91dHB1dFZlY3RvciwgZGVzdCk7Ci0K
LSAgICAgICAgICAgICAgICBpbnB1dFZlY3RvciArPSA0OwotICAgICAgICAgICAgICAgIG91dHB1
dFZlY3RvciArPSA0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgd2hpbGUgKGdyb3VwLS0pIHsKLSAgICAgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0b3IpKTsKLSAgICAg
ICAgICAgICAgICBwRGVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4ob3V0cHV0VmVjdG9y
KTsKLSAgICAgICAgICAgICAgICAqcERlc3QgPSBfbW1fbXVsX3BzKCpwU291cmNlLCBtU2NhbGUp
OwotCi0gICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgICAgICAgICBv
dXRwdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIE5vdyB0
aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBhbGlnbmVkIGFuZCBzdGFydCB0byBhcHBseSBTU0Uu
CisgICAgc2l6ZV90IGdyb3VwID0gbiAvIDQ7CisgICAgX19tMTI4IG1TY2FsZSA9IF9tbV9zZXRf
cHMxKHNjYWxlKTsKKyAgICBfX20xMjgqIHBTb3VyY2U7CisgICAgX19tMTI4KiBwRGVzdDsKKyAg
ICBfX20xMjggZGVzdDsKIAotICAgICAgICAvLyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5p
bmcgZnJhbWVzIHdoaWNoIGlzIGxlc3MgdGhhbiA0LgotICAgICAgICBuICU9IDQ7Ci0gICAgICAg
IHdoaWxlIChuKSB7Ci0gICAgICAgICAgICAqb3V0cHV0VmVjdG9yID0gayAqICppbnB1dFZlY3Rv
cjsKLSAgICAgICAgICAgIGlucHV0VmVjdG9yKys7Ci0gICAgICAgICAgICBvdXRwdXRWZWN0b3Ir
KzsKLSAgICAgICAgICAgIG4tLTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7IC8vIElmIHN0cmlk
ZXMgYXJlIG5vdCAxLCByb2xsYmFjayB0byBub3JtYWwgYWxnb3JpdGhtLgotI2VsaWYgSEFWRShB
Uk1fTkVPTl9JTlRSSU5TSUNTKQotICAgIGlmICgoaW5wdXRTdHJpZGUgPT0gMSkgJiYgKG91dHB1
dFN0cmlkZSA9PSAxKSkgewotICAgICAgICBmbG9hdCBrID0gKnNjYWxlOwotICAgICAgICBpbnQg
dGFpbEZyYW1lcyA9IG4gJSA0OwotICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91dHB1dFZl
Y3RvciArIG4gLSB0YWlsRnJhbWVzOwogCi0gICAgICAgIHdoaWxlIChvdXRwdXRWZWN0b3IgPCBl
bmRQKSB7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UgPSB2bGQxcV9mMzIoaW5wdXRW
ZWN0b3IpOwotICAgICAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZlY3Rvciwgdm11bHFfbl9mMzIo
c291cmNlLCBrKSk7CisgICAgaWYgKCFpczE2Qnl0ZUFsaWduZWQob3V0cHV0VmVjdG9yKSkgewor
ICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgcFNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KGlucHV0VmVjdG9yKSk7CisgICAg
ICAgICAgICBkZXN0ID0gX21tX211bF9wcygqcFNvdXJjZSwgbVNjYWxlKTsKKyAgICAgICAgICAg
IF9tbV9zdG9yZXVfcHMob3V0cHV0VmVjdG9yLCBkZXN0KTsKIAogICAgICAgICAgICAgaW5wdXRW
ZWN0b3IgKz0gNDsKICAgICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OwogICAgICAgICB9Ci0g
ICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlIChncm91
cC0tKSB7CisgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihj
b25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0b3IpKTsKKyAgICAgICAgICAgIHBEZXN0ID0gcmVp
bnRlcnByZXRfY2FzdDxfX20xMjgqPihvdXRwdXRWZWN0b3IpOworICAgICAgICAgICAgKnBEZXN0
ID0gX21tX211bF9wcygqcFNvdXJjZSwgbVNjYWxlKTsKKworICAgICAgICAgICAgaW5wdXRWZWN0
b3IgKz0gNDsKKyAgICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gTm9uLVNTRSBoYW5kbGluZyBmb3IgcmVtYWluaW5nIGZyYW1lcyB3aGljaCBp
cyBsZXNzIHRoYW4gNC4KKyAgICBuICU9IDQ7CisjZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJ
Q1MpCisgICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICBjb25zdCBmbG9hdCogZW5k
UCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOworCisgICAgd2hpbGUgKG91dHB1dFZl
Y3RvciA8IGVuZFApIHsKKyAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlu
cHV0VmVjdG9yKTsKKyAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZlY3Rvciwgdm11bHFfbl9mMzIo
c291cmNlLCBzY2FsZSkpOworCisgICAgICAgIGlucHV0VmVjdG9yICs9IDQ7CisgICAgICAgIG91
dHB1dFZlY3RvciArPSA0OwogICAgIH0KKyAgICBuID0gdGFpbEZyYW1lczsKICNlbmRpZgotICAg
IGZsb2F0IGsgPSAqc2NhbGU7CiAgICAgd2hpbGUgKG4tLSkgewotICAgICAgICAqb3V0cHV0VmVj
dG9yID0gayAqICppbnB1dFZlY3RvcjsKLSAgICAgICAgaW5wdXRWZWN0b3IgKz0gaW5wdXRTdHJp
ZGU7Ci0gICAgICAgIG91dHB1dFZlY3RvciArPSBvdXRwdXRTdHJpZGU7CisgICAgICAgICpvdXRw
dXRWZWN0b3IgPSBzY2FsZSAqICppbnB1dFZlY3RvcjsKKyAgICAgICAgKytpbnB1dFZlY3RvcjsK
KyAgICAgICAgKytvdXRwdXRWZWN0b3I7CiAgICAgfQotI2lmIENQVShYODZfU1NFMikKLSAgICB9
Ci0jZW5kaWYKIH0KIAotdm9pZCB2c2FkZChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGludCBp
bnB1dFN0cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxhciwgZmxvYXQqIG91dHB1dFZlY3RvciwgaW50
IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCit2b2lkIGFk
ZFNjYWxhcihjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxhciwgZmxvYXQqIG91
dHB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCiB7Ci0gICAgaW50
IG4gPSBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzOworICAgIHNpemVfdCBuID0gbnVtYmVyT2ZF
bGVtZW50c1RvUHJvY2VzczsKIAogI2lmIENQVShYODZfU1NFMikKLSAgICBpZiAoaW5wdXRTdHJp
ZGUgPT0gMSAmJiBvdXRwdXRTdHJpZGUgPT0gMSkgewotICAgICAgICAvLyBJZiB0aGUgaW5wdXRW
ZWN0b3IgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBm
cmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KLSAg
ICAgICAgd2hpbGUgKChyZWludGVycHJldF9jYXN0PHNpemVfdD4oaW5wdXRWZWN0b3IpICYgMHgw
RikgJiYgbikgewotICAgICAgICAgICAgKm91dHB1dFZlY3RvciA9ICppbnB1dFZlY3RvciArICpz
Y2FsYXI7Ci0gICAgICAgICAgICBpbnB1dFZlY3RvcisrOwotICAgICAgICAgICAgb3V0cHV0VmVj
dG9yKys7Ci0gICAgICAgICAgICBuLS07Ci0gICAgICAgIH0KKyAgICAvLyBJZiB0aGUgaW5wdXRW
ZWN0b3IgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBm
cmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KKyAg
ICB3aGlsZSAoIWlzMTZCeXRlQWxpZ25lZChpbnB1dFZlY3RvcikgJiYgbikgeworICAgICAgICAq
b3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yICsgc2NhbGFyOworICAgICAgICBpbnB1dFZlY3Rv
cisrOworICAgICAgICBvdXRwdXRWZWN0b3IrKzsKKyAgICAgICAgbi0tOworICAgIH0KIAotICAg
ICAgICAvLyBOb3cgdGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgYWxpZ25lZCBhbmQgc3RhcnQg
dG8gYXBwbHkgU1NFLgotICAgICAgICBpbnQgZ3JvdXAgPSBuIC8gNDsKLSAgICAgICAgX19tMTI4
IG1TY2FsYXIgPSBfbW1fc2V0X3BzMSgqc2NhbGFyKTsKLSAgICAgICAgX19tMTI4KiBwU291cmNl
OwotICAgICAgICBfX20xMjgqIHBEZXN0OwotICAgICAgICBfX20xMjggZGVzdDsKLQotICAgICAg
ICBib29sIGRlc3RBbGlnbmVkID0gIShyZWludGVycHJldF9jYXN0PHNpemVfdD4ob3V0cHV0VmVj
dG9yKSAmIDB4MEYpOwotICAgICAgICBpZiAoZGVzdEFsaWduZWQpIHsgLy8gYWxsIGFsaWduZWQK
LSAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7Ci0gICAgICAgICAgICAgICAgcFNvdXJjZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KGlucHV0VmVjdG9y
KSk7Ci0gICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KG91
dHB1dFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgKnBEZXN0ID0gX21tX2FkZF9wcygqcFNvdXJj
ZSwgbVNjYWxhcik7Ci0KLSAgICAgICAgICAgICAgICBpbnB1dFZlY3RvciArPSA0OwotICAgICAg
ICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgd2hpbGUgKGdyb3VwLS0pIHsKLSAgICAgICAgICAgICAgICBwU291
cmNlID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRW
ZWN0b3IpKTsKLSAgICAgICAgICAgICAgICBkZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZSwgbVNj
YWxhcik7Ci0gICAgICAgICAgICAgICAgX21tX3N0b3JldV9wcyhvdXRwdXRWZWN0b3IsIGRlc3Qp
OwotCi0gICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgICAgICAgICBv
dXRwdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIE5vdyB0
aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBhbGlnbmVkIGFuZCBzdGFydCB0byBhcHBseSBTU0Uu
CisgICAgc2l6ZV90IGdyb3VwID0gbiAvIDQ7CisgICAgX19tMTI4IG1TY2FsYXIgPSBfbW1fc2V0
X3BzMShzY2FsYXIpOworICAgIF9fbTEyOCogcFNvdXJjZTsKKyAgICBfX20xMjgqIHBEZXN0Owor
ICAgIF9fbTEyOCBkZXN0OwogCi0gICAgICAgIC8vIE5vbi1TU0UgaGFuZGxpbmcgZm9yIHJlbWFp
bmluZyBmcmFtZXMgd2hpY2ggaXMgbGVzcyB0aGFuIDQuCi0gICAgICAgIG4gJT0gNDsKLSAgICAg
ICAgd2hpbGUgKG4pIHsKLSAgICAgICAgICAgICpvdXRwdXRWZWN0b3IgPSAqaW5wdXRWZWN0b3Ig
KyAqc2NhbGFyOwotICAgICAgICAgICAgaW5wdXRWZWN0b3IrKzsKLSAgICAgICAgICAgIG91dHB1
dFZlY3RvcisrOwotICAgICAgICAgICAgbi0tOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsgLy8g
aWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1hbCBhbGdvcml0aG0KLSNlbGlm
IEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBpZiAoaW5wdXRTdHJpZGUgPT0gMSAmJiBv
dXRwdXRTdHJpZGUgPT0gMSkgewotICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAg
ICAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwot
ICAgICAgICBmbG9hdDMyeDRfdCBzY2FsYXJWZWN0b3IgPSB2ZHVwcV9uX2YzMigqc2NhbGFyKTsK
KyAgICBib29sIGRlc3RBbGlnbmVkID0gaXMxNkJ5dGVBbGlnbmVkKG91dHB1dFZlY3Rvcik7Cisg
ICAgaWYgKGRlc3RBbGlnbmVkKSB7IC8vIGFsbCBhbGlnbmVkCisgICAgICAgIHdoaWxlIChncm91
cC0tKSB7CisgICAgICAgICAgICBwU291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihj
b25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0b3IpKTsKKyAgICAgICAgICAgIHBEZXN0ID0gcmVp
bnRlcnByZXRfY2FzdDxfX20xMjgqPihvdXRwdXRWZWN0b3IpOworICAgICAgICAgICAgKnBEZXN0
ID0gX21tX2FkZF9wcygqcFNvdXJjZSwgbVNjYWxhcik7CiAKLSAgICAgICAgd2hpbGUgKG91dHB1
dFZlY3RvciA8IGVuZFApIHsKLSAgICAgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFx
X2YzMihpbnB1dFZlY3Rvcik7Ci0gICAgICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2
YWRkcV9mMzIoc291cmNlLCBzY2FsYXJWZWN0b3IpKTsKKyAgICAgICAgICAgIGlucHV0VmVjdG9y
ICs9IDQ7CisgICAgICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIHdoaWxlIChncm91cC0tKSB7CisgICAgICAgICAgICBwU291cmNlID0g
cmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5wdXRWZWN0b3Ip
KTsKKyAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNlLCBtU2NhbGFyKTsKKyAg
ICAgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0cHV0VmVjdG9yLCBkZXN0KTsKIAogICAgICAgICAg
ICAgaW5wdXRWZWN0b3IgKz0gNDsKICAgICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OwogICAg
ICAgICB9Ci0gICAgICAgIG4gPSB0YWlsRnJhbWVzOwogICAgIH0KKworICAgIC8vIE5vbi1TU0Ug
aGFuZGxpbmcgZm9yIHJlbWFpbmluZyBmcmFtZXMgd2hpY2ggaXMgbGVzcyB0aGFuIDQuCisgICAg
biAlPSA0OworI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgIHNpemVfdCB0YWls
RnJhbWVzID0gbiAlIDQ7CisgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBu
IC0gdGFpbEZyYW1lczsKKyAgICBmbG9hdDMyeDRfdCBzY2FsYXJWZWN0b3IgPSB2ZHVwcV9uX2Yz
MihzY2FsYXIpOworCisgICAgd2hpbGUgKG91dHB1dFZlY3RvciA8IGVuZFApIHsKKyAgICAgICAg
ZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yKTsKKyAgICAgICAgdnN0
MXFfZjMyKG91dHB1dFZlY3RvciwgdmFkZHFfZjMyKHNvdXJjZSwgc2NhbGFyVmVjdG9yKSk7CisK
KyAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKKyAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Cisg
ICAgfQorICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAgICAgd2hpbGUgKG4tLSkgewotICAg
ICAgICAqb3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yICsgKnNjYWxhcjsKLSAgICAgICAgaW5w
dXRWZWN0b3IgKz0gaW5wdXRTdHJpZGU7Ci0gICAgICAgIG91dHB1dFZlY3RvciArPSBvdXRwdXRT
dHJpZGU7Ci0gICAgfQotI2lmIENQVShYODZfU1NFMikKKyAgICAgICAgKm91dHB1dFZlY3RvciA9
ICppbnB1dFZlY3RvciArIHNjYWxhcjsKKyAgICAgICAgKytpbnB1dFZlY3RvcjsKKyAgICAgICAg
KytvdXRwdXRWZWN0b3I7CiAgICAgfQotI2VuZGlmCiB9CiAKLXZvaWQgdmFkZChjb25zdCBmbG9h
dCogaW5wdXRWZWN0b3IxLCBpbnQgaW5wdXRTdHJpZGUxLCBjb25zdCBmbG9hdCogaW5wdXRWZWN0
b3IyLCBpbnQgaW5wdXRTdHJpZGUyLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3Ry
aWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKK3ZvaWQgYWRkKGNvbnN0IGZs
b2F0KiBpbnB1dFZlY3RvcjEsIGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjIsIGZsb2F0KiBvdXRw
dXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQogewotICAgIGludCBu
ID0gbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsKKyAgICBzaXplX3QgbiA9IG51bWJlck9mRWxl
bWVudHNUb1Byb2Nlc3M7CiAKICNpZiBDUFUoWDg2X1NTRTIpCi0gICAgaWYgKChpbnB1dFN0cmlk
ZTEgPT0xKSAmJiAoaW5wdXRTdHJpZGUyID09IDEpICYmIChvdXRwdXRTdHJpZGUgPT0gMSkpIHsK
LSAgICAgICAgLy8gSWYgdGhlIGlucHV0VmVjdG9yIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxp
Z25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUg
cHJvY2Vzc2VkIHNlcGFyYXRlbHkuCi0gICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KGlucHV0VmVjdG9yMSkgJiAweDBGKSAmJiBuKSB7Ci0gICAgICAgICAgICAqb3V0cHV0
VmVjdG9yID0gKmlucHV0VmVjdG9yMSArICppbnB1dFZlY3RvcjI7Ci0gICAgICAgICAgICBpbnB1
dFZlY3RvcjErKzsKLSAgICAgICAgICAgIGlucHV0VmVjdG9yMisrOwotICAgICAgICAgICAgb3V0
cHV0VmVjdG9yKys7Ci0gICAgICAgICAgICBuLS07Ci0gICAgICAgIH0KKyAgICAvLyBJZiB0aGUg
aW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2
ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVs
eS4KKyAgICB3aGlsZSAoIWlzMTZCeXRlQWxpZ25lZChpbnB1dFZlY3RvcjEpICYmIG4pIHsKKyAg
ICAgICAgKm91dHB1dFZlY3RvciA9ICppbnB1dFZlY3RvcjEgKyAqaW5wdXRWZWN0b3IyOworICAg
ICAgICBpbnB1dFZlY3RvcjErKzsKKyAgICAgICAgaW5wdXRWZWN0b3IyKys7CisgICAgICAgIG91
dHB1dFZlY3RvcisrOworICAgICAgICBuLS07CisgICAgfQorCisgICAgLy8gTm93IHRoZSBpbnB1
dFZlY3RvcjEgYWRkcmVzcyBpcyBhbGlnbmVkIGFuZCBzdGFydCB0byBhcHBseSBTU0UuCisgICAg
c2l6ZV90IGdyb3VwID0gbiAvIDQ7CisgICAgX19tMTI4KiBwU291cmNlMTsKKyAgICBfX20xMjgq
IHBTb3VyY2UyOworICAgIF9fbTEyOCogcERlc3Q7CisgICAgX19tMTI4IHNvdXJjZTI7CisgICAg
X19tMTI4IGRlc3Q7CisKKyAgICBib29sIHNvdXJjZTJBbGlnbmVkID0gaXMxNkJ5dGVBbGlnbmVk
KGlucHV0VmVjdG9yMik7CisgICAgYm9vbCBkZXN0QWxpZ25lZCA9IGlzMTZCeXRlQWxpZ25lZChv
dXRwdXRWZWN0b3IpOworCisgICAgaWYgKHNvdXJjZTJBbGlnbmVkICYmIGRlc3RBbGlnbmVkKSB7
IC8vIGFsbCBhbGlnbmVkCisgICAgICAgIHdoaWxlIChncm91cC0tKSB7CisgICAgICAgICAgICBw
U291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3RfY2FzdDxmbG9hdCo+KGlu
cHV0VmVjdG9yMSkpOworICAgICAgICAgICAgcFNvdXJjZTIgPSByZWludGVycHJldF9jYXN0PF9f
bTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvcjIpKTsKKyAgICAgICAgICAgIHBE
ZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihvdXRwdXRWZWN0b3IpOworICAgICAgICAg
ICAgKnBEZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZTEsICpwU291cmNlMik7CiAKLSAgICAgICAg
Ly8gTm93IHRoZSBpbnB1dFZlY3RvcjEgYWRkcmVzcyBpcyBhbGlnbmVkIGFuZCBzdGFydCB0byBh
cHBseSBTU0UuCi0gICAgICAgIGludCBncm91cCA9IG4gLyA0OwotICAgICAgICBfX20xMjgqIHBT
b3VyY2UxOwotICAgICAgICBfX20xMjgqIHBTb3VyY2UyOwotICAgICAgICBfX20xMjgqIHBEZXN0
OwotICAgICAgICBfX20xMjggc291cmNlMjsKLSAgICAgICAgX19tMTI4IGRlc3Q7Ci0KLSAgICAg
ICAgYm9vbCBzb3VyY2UyQWxpZ25lZCA9ICEocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGlucHV0
VmVjdG9yMikgJiAweDBGKTsKLSAgICAgICAgYm9vbCBkZXN0QWxpZ25lZCA9ICEocmVpbnRlcnBy
ZXRfY2FzdDxzaXplX3Q+KG91dHB1dFZlY3RvcikgJiAweDBGKTsKLQotICAgICAgICBpZiAoc291
cmNlMkFsaWduZWQgJiYgZGVzdEFsaWduZWQpIHsgLy8gYWxsIGFsaWduZWQKLSAgICAgICAgICAg
IHdoaWxlIChncm91cC0tKSB7Ci0gICAgICAgICAgICAgICAgcFNvdXJjZTEgPSByZWludGVycHJl
dF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvcjEpKTsKLSAgICAg
ICAgICAgICAgICBwU291cmNlMiA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29uc3RfY2Fz
dDxmbG9hdCo+KGlucHV0VmVjdG9yMikpOwotICAgICAgICAgICAgICAgIHBEZXN0ID0gcmVpbnRl
cnByZXRfY2FzdDxfX20xMjgqPihvdXRwdXRWZWN0b3IpOwotICAgICAgICAgICAgICAgICpwRGVz
dCA9IF9tbV9hZGRfcHMoKnBTb3VyY2UxLCAqcFNvdXJjZTIpOwotCi0gICAgICAgICAgICAgICAg
aW5wdXRWZWN0b3IxICs9IDQ7Ci0gICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IyICs9IDQ7Ci0g
ICAgICAgICAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgfSBlbHNlIGlmIChzb3VyY2UyQWxpZ25lZCAmJiAhZGVzdEFsaWduZWQpIHsgLy8gc291cmNl
MiBhbGlnbmVkIGJ1dCBkZXN0IG5vdCBhbGlnbmVkIAotICAgICAgICAgICAgd2hpbGUgKGdyb3Vw
LS0pIHsKLSAgICAgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4
Kj4oY29uc3RfY2FzdDxmbG9hdCo+KGlucHV0VmVjdG9yMSkpOwotICAgICAgICAgICAgICAgIHBT
b3VyY2UyID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5w
dXRWZWN0b3IyKSk7Ci0gICAgICAgICAgICAgICAgZGVzdCA9IF9tbV9hZGRfcHMoKnBTb3VyY2Ux
LCAqcFNvdXJjZTIpOwotICAgICAgICAgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0cHV0VmVjdG9y
LCBkZXN0KTsKLQotICAgICAgICAgICAgICAgIGlucHV0VmVjdG9yMSArPSA0OwotICAgICAgICAg
ICAgICAgIGlucHV0VmVjdG9yMiArPSA0OwotICAgICAgICAgICAgICAgIG91dHB1dFZlY3RvciAr
PSA0OwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZTJBbGlnbmVk
ICYmIGRlc3RBbGlnbmVkKSB7IC8vIHNvdXJjZTIgbm90IGFsaWduZWQgYnV0IGRlc3QgYWxpZ25l
ZCAKLSAgICAgICAgICAgIHdoaWxlIChncm91cC0tKSB7Ci0gICAgICAgICAgICAgICAgcFNvdXJj
ZTEgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZl
Y3RvcjEpKTsKLSAgICAgICAgICAgICAgICBzb3VyY2UyID0gX21tX2xvYWR1X3BzKGlucHV0VmVj
dG9yMik7Ci0gICAgICAgICAgICAgICAgcERlc3QgPSByZWludGVycHJldF9jYXN0PF9fbTEyOCo+
KG91dHB1dFZlY3Rvcik7Ci0gICAgICAgICAgICAgICAgKnBEZXN0ID0gX21tX2FkZF9wcygqcFNv
dXJjZTEsIHNvdXJjZTIpOwotCi0gICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7Ci0g
ICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IyICs9IDQ7Ci0gICAgICAgICAgICAgICAgb3V0cHV0
VmVjdG9yICs9IDQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoIXNvdXJjZTJB
bGlnbmVkICYmICFkZXN0QWxpZ25lZCkgeyAvLyBib3RoIHNvdXJjZTIgYW5kIGRlc3Qgbm90IGFs
aWduZWQgCi0gICAgICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgewotICAgICAgICAgICAgICAgIHBT
b3VyY2UxID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihjb25zdF9jYXN0PGZsb2F0Kj4oaW5w
dXRWZWN0b3IxKSk7Ci0gICAgICAgICAgICAgICAgc291cmNlMiA9IF9tbV9sb2FkdV9wcyhpbnB1
dFZlY3RvcjIpOwotICAgICAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNlMSwg
c291cmNlMik7Ci0gICAgICAgICAgICAgICAgX21tX3N0b3JldV9wcyhvdXRwdXRWZWN0b3IsIGRl
c3QpOwotCi0gICAgICAgICAgICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7Ci0gICAgICAgICAgICAg
ICAgaW5wdXRWZWN0b3IyICs9IDQ7Ci0gICAgICAgICAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpbnB1dFZlY3RvcjEgKz0gNDsKKyAgICAgICAg
ICAgIGlucHV0VmVjdG9yMiArPSA0OworICAgICAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7CiAg
ICAgICAgIH0KIAotICAgICAgICAvLyBOb24tU1NFIGhhbmRsaW5nIGZvciByZW1haW5pbmcgZnJh
bWVzIHdoaWNoIGlzIGxlc3MgdGhhbiA0LgotICAgICAgICBuICU9IDQ7Ci0gICAgICAgIHdoaWxl
IChuKSB7Ci0gICAgICAgICAgICAqb3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yMSArICppbnB1
dFZlY3RvcjI7Ci0gICAgICAgICAgICBpbnB1dFZlY3RvcjErKzsKLSAgICAgICAgICAgIGlucHV0
VmVjdG9yMisrOwotICAgICAgICAgICAgb3V0cHV0VmVjdG9yKys7Ci0gICAgICAgICAgICBuLS07
CisgICAgfSBlbHNlIGlmIChzb3VyY2UyQWxpZ25lZCAmJiAhZGVzdEFsaWduZWQpIHsgLy8gc291
cmNlMiBhbGlnbmVkIGJ1dCBkZXN0IG5vdCBhbGlnbmVkCisgICAgICAgIHdoaWxlIChncm91cC0t
KSB7CisgICAgICAgICAgICBwU291cmNlMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4Kj4oY29u
c3RfY2FzdDxmbG9hdCo+KGlucHV0VmVjdG9yMSkpOworICAgICAgICAgICAgcFNvdXJjZTIgPSBy
ZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvcjIp
KTsKKyAgICAgICAgICAgIGRlc3QgPSBfbW1fYWRkX3BzKCpwU291cmNlMSwgKnBTb3VyY2UyKTsK
KyAgICAgICAgICAgIF9tbV9zdG9yZXVfcHMob3V0cHV0VmVjdG9yLCBkZXN0KTsKKworICAgICAg
ICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7CisgICAgICAgICAgICBpbnB1dFZlY3RvcjIgKz0gNDsK
KyAgICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OwogICAgICAgICB9Ci0gICAgfSBlbHNlIHsg
Ly8gaWYgc3RyaWRlcyBhcmUgbm90IDEsIHJvbGxiYWNrIHRvIG5vcm1hbCBhbGdvcml0aG0KLSNl
bGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKLSAgICBpZiAoKGlucHV0U3RyaWRlMSA9PTEp
ICYmIChpbnB1dFN0cmlkZTIgPT0gMSkgJiYgKG91dHB1dFN0cmlkZSA9PSAxKSkgewotICAgICAg
ICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgICAgICBjb25zdCBmbG9hdCogZW5kUCA9IG91
dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwogCi0gICAgICAgIHdoaWxlIChvdXRwdXRWZWN0
b3IgPCBlbmRQKSB7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UxID0gdmxkMXFfZjMy
KGlucHV0VmVjdG9yMSk7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2UyID0gdmxkMXFf
ZjMyKGlucHV0VmVjdG9yMik7Ci0gICAgICAgICAgICB2c3QxcV9mMzIob3V0cHV0VmVjdG9yLCB2
YWRkcV9mMzIoc291cmNlMSwgc291cmNlMikpOworICAgIH0gZWxzZSBpZiAoIXNvdXJjZTJBbGln
bmVkICYmIGRlc3RBbGlnbmVkKSB7IC8vIHNvdXJjZTIgbm90IGFsaWduZWQgYnV0IGRlc3QgYWxp
Z25lZAorICAgICAgICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgcFNvdXJjZTEgPSBy
ZWludGVycHJldF9jYXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvcjEp
KTsKKyAgICAgICAgICAgIHNvdXJjZTIgPSBfbW1fbG9hZHVfcHMoaW5wdXRWZWN0b3IyKTsKKyAg
ICAgICAgICAgIHBEZXN0ID0gcmVpbnRlcnByZXRfY2FzdDxfX20xMjgqPihvdXRwdXRWZWN0b3Ip
OworICAgICAgICAgICAgKnBEZXN0ID0gX21tX2FkZF9wcygqcFNvdXJjZTEsIHNvdXJjZTIpOwog
CiAgICAgICAgICAgICBpbnB1dFZlY3RvcjEgKz0gNDsKICAgICAgICAgICAgIGlucHV0VmVjdG9y
MiArPSA0OwogICAgICAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7CiAgICAgICAgIH0KLSAgICAg
ICAgbiA9IHRhaWxGcmFtZXM7CisgICAgfSBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYgIWRl
c3RBbGlnbmVkKSB7IC8vIGJvdGggc291cmNlMiBhbmQgZGVzdCBub3QgYWxpZ25lZAorICAgICAg
ICB3aGlsZSAoZ3JvdXAtLSkgeworICAgICAgICAgICAgcFNvdXJjZTEgPSByZWludGVycHJldF9j
YXN0PF9fbTEyOCo+KGNvbnN0X2Nhc3Q8ZmxvYXQqPihpbnB1dFZlY3RvcjEpKTsKKyAgICAgICAg
ICAgIHNvdXJjZTIgPSBfbW1fbG9hZHVfcHMoaW5wdXRWZWN0b3IyKTsKKyAgICAgICAgICAgIGRl
c3QgPSBfbW1fYWRkX3BzKCpwU291cmNlMSwgc291cmNlMik7CisgICAgICAgICAgICBfbW1fc3Rv
cmV1X3BzKG91dHB1dFZlY3RvciwgZGVzdCk7CisKKyAgICAgICAgICAgIGlucHV0VmVjdG9yMSAr
PSA0OworICAgICAgICAgICAgaW5wdXRWZWN0b3IyICs9IDQ7CisgICAgICAgICAgICBvdXRwdXRW
ZWN0b3IgKz0gNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vbi1TU0UgaGFuZGxpbmcg
Zm9yIHJlbWFpbmluZyBmcmFtZXMgd2hpY2ggaXMgbGVzcyB0aGFuIDQuCisgICAgbiAlPSA0Owor
I2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5TSUNTKQorICAgIHNpemVfdCB0YWlsRnJhbWVzID0g
biAlIDQ7CisgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZy
YW1lczsKKworICAgIHdoaWxlIChvdXRwdXRWZWN0b3IgPCBlbmRQKSB7CisgICAgICAgIGZsb2F0
MzJ4NF90IHNvdXJjZTEgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IxKTsKKyAgICAgICAgZmxvYXQz
Mng0X3Qgc291cmNlMiA9IHZsZDFxX2YzMihpbnB1dFZlY3RvcjIpOworICAgICAgICB2c3QxcV9m
MzIob3V0cHV0VmVjdG9yLCB2YWRkcV9mMzIoc291cmNlMSwgc291cmNlMikpOworCisgICAgICAg
IGlucHV0VmVjdG9yMSArPSA0OworICAgICAgICBpbnB1dFZlY3RvcjIgKz0gNDsKKyAgICAgICAg
b3V0cHV0VmVjdG9yICs9IDQ7CiAgICAgfQorICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAg
ICAgd2hpbGUgKG4tLSkgewogICAgICAgICAqb3V0cHV0VmVjdG9yID0gKmlucHV0VmVjdG9yMSAr
ICppbnB1dFZlY3RvcjI7Ci0gICAgICAgIGlucHV0VmVjdG9yMSArPSBpbnB1dFN0cmlkZTE7Ci0g
ICAgICAgIGlucHV0VmVjdG9yMiArPSBpbnB1dFN0cmlkZTI7Ci0gICAgICAgIG91dHB1dFZlY3Rv
ciArPSBvdXRwdXRTdHJpZGU7CisgICAgICAgICsraW5wdXRWZWN0b3IxOworICAgICAgICArK2lu
cHV0VmVjdG9yMjsKKyAgICAgICAgKytvdXRwdXRWZWN0b3I7CiAgICAgfQotI2lmIENQVShYODZf
U1NFMikKLSAgICB9Ci0jZW5kaWYKIH0KIAotdm9pZCB2bXVsKGNvbnN0IGZsb2F0KiBpbnB1dFZl
Y3RvcjEsIGludCBpbnB1dFN0cmlkZTEsIGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjIsIGludCBp
bnB1dFN0cmlkZTIsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIGludCBvdXRwdXRTdHJpZGUsIHNpemVf
dCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQordm9pZCBtdWx0aXBseShjb25zdCBmbG9hdCog
aW5wdXRWZWN0b3IxLCBjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IyLCBmbG9hdCogb3V0cHV0VmVj
dG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKIHsKLQotICAgIGludCBuID0g
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsKKyAgICBzaXplX3QgbiA9IG51bWJlck9mRWxlbWVu
dHNUb1Byb2Nlc3M7CiAKICNpZiBDUFUoWDg2X1NTRTIpCi0gICAgaWYgKChpbnB1dFN0cmlkZTEg
PT0gMSkgJiYgKGlucHV0U3RyaWRlMiA9PSAxKSAmJiAob3V0cHV0U3RyaWRlID09IDEpKSB7Ci0g
ICAgICAgIC8vIElmIHRoZSBpbnB1dFZlY3RvcjEgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGln
bmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBw
cm9jZXNzZWQgc2VwYXJhdGVseS4KLSAgICAgICAgd2hpbGUgKChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4oaW5wdXRWZWN0b3IxKSAmIDB4MEYpICYmIG4pIHsKLSAgICAgICAgICAgICpvdXRw
dXRWZWN0b3IgPSAqaW5wdXRWZWN0b3IxICogKmlucHV0VmVjdG9yMjsKLSAgICAgICAgICAgIGlu
cHV0VmVjdG9yMSsrOwotICAgICAgICAgICAgaW5wdXRWZWN0b3IyKys7Ci0gICAgICAgICAgICBv
dXRwdXRWZWN0b3IrKzsKLSAgICAgICAgICAgIG4tLTsKLSAgICAgICAgfQorICAgIC8vIElmIHRo
ZSBpbnB1dFZlY3RvcjEgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qg
c2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJh
dGVseS4KKyAgICB3aGlsZSAoIWlzMTZCeXRlQWxpZ25lZChpbnB1dFZlY3RvcjEpICYmIG4pIHsK
KyAgICAgICAgKm91dHB1dFZlY3RvciA9ICppbnB1dFZlY3RvcjEgKiAqaW5wdXRWZWN0b3IyOwor
ICAgICAgICBpbnB1dFZlY3RvcjErKzsKKyAgICAgICAgaW5wdXRWZWN0b3IyKys7CisgICAgICAg
IG91dHB1dFZlY3RvcisrOworICAgICAgICBuLS07CisgICAgfQogCi0gICAgICAgIC8vIE5vdyB0
aGUgaW5wdXRWZWN0b3IxIGFkZHJlc3MgYWxpZ25lZCBhbmQgc3RhcnQgdG8gYXBwbHkgU1NFLgot
ICAgICAgICBpbnQgdGFpbEZyYW1lcyA9IG4gJSA0OwotICAgICAgICBjb25zdCBmbG9hdCogZW5k
UCA9IG91dHB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotICAgICAgICBfX20xMjggcFNvdXJj
ZTE7Ci0gICAgICAgIF9fbTEyOCBwU291cmNlMjsKLSAgICAgICAgX19tMTI4IGRlc3Q7Ci0KLSAg
ICAgICAgYm9vbCBzb3VyY2UyQWxpZ25lZCA9ICEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KGlucHV0VmVjdG9yMikgJiAweDBGKTsKLSAgICAgICAgYm9vbCBkZXN0QWxpZ25lZCA9ICEocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG91dHB1dFZlY3RvcikgJiAweDBGKTsKLQotI2RlZmlu
ZSBTU0UyX01VTFQobG9hZEluc3RyLCBzdG9yZUluc3RyKSAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICB3aGlsZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBwU291cmNlMSA9IF9tbV9sb2FkX3BzKGlu
cHV0VmVjdG9yMSk7ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBwU291cmNlMiA9IF9tbV8j
I2xvYWRJbnN0ciMjX3BzKGlucHV0VmVjdG9yMik7IFwKLSAgICAgICAgICAgICAgICBkZXN0ID0g
X21tX211bF9wcyhwU291cmNlMSwgcFNvdXJjZTIpOyAgICAgXAotICAgICAgICAgICAgICAgIF9t
bV8jI3N0b3JlSW5zdHIjI19wcyhvdXRwdXRWZWN0b3IsIGRlc3QpOyAgICAgICAgXAotICAgICAg
ICAgICAgICAgIGlucHV0VmVjdG9yMSArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICAgICAgICAgIGlucHV0VmVjdG9yMiArPSA0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgIG91dHB1dFZlY3RvciArPSA0OyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfQotCi0gICAgICAgIGlmIChzb3Vy
Y2UyQWxpZ25lZCAmJiBkZXN0QWxpZ25lZCkgLy8gQm90aCBhbGlnbmVkLgotICAgICAgICAgICAg
U1NFMl9NVUxUKGxvYWQsIHN0b3JlKQotICAgICAgICBlbHNlIGlmIChzb3VyY2UyQWxpZ25lZCAm
JiAhZGVzdEFsaWduZWQpIC8vIFNvdXJjZTIgaXMgYWxpZ25lZCBidXQgZGVzdCBub3QuCi0gICAg
ICAgICAgICBTU0UyX01VTFQobG9hZCwgc3RvcmV1KQotICAgICAgICBlbHNlIGlmICghc291cmNl
MkFsaWduZWQgJiYgZGVzdEFsaWduZWQpIC8vIERlc3QgaXMgYWxpZ25lZCBidXQgc291cmNlMiBu
b3QuCi0gICAgICAgICAgICBTU0UyX01VTFQobG9hZHUsIHN0b3JlKQotICAgICAgICBlbHNlIC8v
IE5laXRoZXIgYWxpZ25lZC4KLSAgICAgICAgICAgIFNTRTJfTVVMVChsb2FkdSwgc3RvcmV1KQot
Ci0gICAgICAgIG4gPSB0YWlsRnJhbWVzOworICAgIC8vIE5vdyB0aGUgaW5wdXRWZWN0b3IxIGFk
ZHJlc3MgYWxpZ25lZCBhbmQgc3RhcnQgdG8gYXBwbHkgU1NFLgorICAgIHNpemVfdCB0YWlsRnJh
bWVzID0gbiAlIDQ7CisgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0g
dGFpbEZyYW1lczsKKyAgICBfX20xMjggcFNvdXJjZTE7CisgICAgX19tMTI4IHBTb3VyY2UyOwor
ICAgIF9fbTEyOCBkZXN0OworCisgICAgYm9vbCBzb3VyY2UyQWxpZ25lZCA9IGlzMTZCeXRlQWxp
Z25lZChpbnB1dFZlY3RvcjIpOworICAgIGJvb2wgZGVzdEFsaWduZWQgPSBpczE2Qnl0ZUFsaWdu
ZWQob3V0cHV0VmVjdG9yKTsKKworI2RlZmluZSBTU0UyX01VTFQobG9hZEluc3RyLCBzdG9yZUlu
c3RyKSAgICAgICAgICAgICAgIFwKKyAgICB3aGlsZSAob3V0cHV0VmVjdG9yIDwgZW5kUCkgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwU291cmNlMSA9IF9tbV9sb2FkX3BzKGlu
cHV0VmVjdG9yMSk7ICAgICAgICAgIFwKKyAgICAgICAgcFNvdXJjZTIgPSBfbW1fIyNsb2FkSW5z
dHIjI19wcyhpbnB1dFZlY3RvcjIpOyBcCisgICAgICAgIGRlc3QgPSBfbW1fbXVsX3BzKHBTb3Vy
Y2UxLCBwU291cmNlMik7ICAgICAgICAgXAorICAgICAgICBfbW1fIyNzdG9yZUluc3RyIyNfcHMo
b3V0cHV0VmVjdG9yLCBkZXN0KTsgICAgIFwKKyAgICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlucHV0VmVjdG9yMiArPSA0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CisKKyAgICBpZiAoc291cmNlMkFs
aWduZWQgJiYgZGVzdEFsaWduZWQpIC8vIEJvdGggYWxpZ25lZC4KKyAgICAgICAgU1NFMl9NVUxU
KGxvYWQsIHN0b3JlKQorICAgIGVsc2UgaWYgKHNvdXJjZTJBbGlnbmVkICYmICFkZXN0QWxpZ25l
ZCkgLy8gU291cmNlMiBpcyBhbGlnbmVkIGJ1dCBkZXN0IG5vdC4KKyAgICAgICAgU1NFMl9NVUxU
KGxvYWQsIHN0b3JldSkKKyAgICBlbHNlIGlmICghc291cmNlMkFsaWduZWQgJiYgZGVzdEFsaWdu
ZWQpIC8vIERlc3QgaXMgYWxpZ25lZCBidXQgc291cmNlMiBub3QuCisgICAgICAgIFNTRTJfTVVM
VChsb2FkdSwgc3RvcmUpCisgICAgZWxzZSAvLyBOZWl0aGVyIGFsaWduZWQuCisgICAgICAgIFNT
RTJfTVVMVChsb2FkdSwgc3RvcmV1KQorCisgICAgbiA9IHRhaWxGcmFtZXM7CiAjZWxpZiBIQVZF
KEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAgaWYgKChpbnB1dFN0cmlkZTEgPT0xKSAmJiAoaW5w
dXRTdHJpZGUyID09IDEpICYmIChvdXRwdXRTdHJpZGUgPT0gMSkpIHsKLSAgICAgICAgaW50IHRh
aWxGcmFtZXMgPSBuICUgNDsKLSAgICAgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0
b3IgKyBuIC0gdGFpbEZyYW1lczsKKyAgICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OworICAg
IGNvbnN0IGZsb2F0KiBlbmRQID0gb3V0cHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7CiAKLSAg
ICAgICAgd2hpbGUgKG91dHB1dFZlY3RvciA8IGVuZFApIHsKLSAgICAgICAgICAgIGZsb2F0MzJ4
NF90IHNvdXJjZTEgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IxKTsKLSAgICAgICAgICAgIGZsb2F0
MzJ4NF90IHNvdXJjZTIgPSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IyKTsKLSAgICAgICAgICAgIHZz
dDFxX2YzMihvdXRwdXRWZWN0b3IsIHZtdWxxX2YzMihzb3VyY2UxLCBzb3VyY2UyKSk7CisgICAg
d2hpbGUgKG91dHB1dFZlY3RvciA8IGVuZFApIHsKKyAgICAgICAgZmxvYXQzMng0X3Qgc291cmNl
MSA9IHZsZDFxX2YzMihpbnB1dFZlY3RvcjEpOworICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2Uy
ID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yMik7CisgICAgICAgIHZzdDFxX2YzMihvdXRwdXRWZWN0
b3IsIHZtdWxxX2YzMihzb3VyY2UxLCBzb3VyY2UyKSk7CiAKLSAgICAgICAgICAgIGlucHV0VmVj
dG9yMSArPSA0OwotICAgICAgICAgICAgaW5wdXRWZWN0b3IyICs9IDQ7Ci0gICAgICAgICAgICBv
dXRwdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgfQotICAgICAgICBuID0gdGFpbEZyYW1lczsKKyAg
ICAgICAgaW5wdXRWZWN0b3IxICs9IDQ7CisgICAgICAgIGlucHV0VmVjdG9yMiArPSA0OworICAg
ICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKICAgICB9CisgICAgbiA9IHRhaWxGcmFtZXM7CiAjZW5k
aWYKLSAgICB3aGlsZSAobikgeworICAgIHdoaWxlIChuLS0pIHsKICAgICAgICAgKm91dHB1dFZl
Y3RvciA9ICppbnB1dFZlY3RvcjEgKiAqaW5wdXRWZWN0b3IyOwotICAgICAgICBpbnB1dFZlY3Rv
cjEgKz0gaW5wdXRTdHJpZGUxOwotICAgICAgICBpbnB1dFZlY3RvcjIgKz0gaW5wdXRTdHJpZGUy
OwotICAgICAgICBvdXRwdXRWZWN0b3IgKz0gb3V0cHV0U3RyaWRlOwotICAgICAgICBuLS07Cisg
ICAgICAgICsraW5wdXRWZWN0b3IxOworICAgICAgICArK2lucHV0VmVjdG9yMjsKKyAgICAgICAg
KytvdXRwdXRWZWN0b3I7CiAgICAgfQogfQogCi12b2lkIHp2bXVsKGNvbnN0IGZsb2F0KiByZWFs
VmVjdG9yMSwgY29uc3QgZmxvYXQqIGltYWdWZWN0b3IxLCBjb25zdCBmbG9hdCogcmVhbFZlY3Rv
cjIsIGNvbnN0IGZsb2F0KiBpbWFnMlAsIGZsb2F0KiByZWFsT3V0cHV0VmVjdG9yLCBmbG9hdCog
aW1hZ0Rlc3RQLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzcykKK3ZvaWQgbXVsdGlw
bHlDb21wbGV4KGNvbnN0IGZsb2F0KiByZWFsVmVjdG9yMSwgY29uc3QgZmxvYXQqIGltYWdWZWN0
b3IxLCBjb25zdCBmbG9hdCogcmVhbFZlY3RvcjIsIGNvbnN0IGZsb2F0KiBpbWFnMlAsIGZsb2F0
KiByZWFsT3V0cHV0VmVjdG9yLCBmbG9hdCogaW1hZ0Rlc3RQLCBzaXplX3QgbnVtYmVyT2ZFbGVt
ZW50c1RvUHJvY2VzcykKIHsKICAgICB1bnNpZ25lZCBpID0gMDsKICNpZiBDUFUoWDg2X1NTRTIp
CiAgICAgLy8gT25seSB1c2UgdGhlIFNTRSBvcHRpbWl6YXRpb24gaW4gdGhlIHZlcnkgY29tbW9u
IGNhc2UgdGhhdCBhbGwgYWRkcmVzc2VzIGFyZSAxNi1ieXRlIGFsaWduZWQuIAogICAgIC8vIE90
aGVyd2lzZSwgZmFsbCB0aHJvdWdoIHRvIHRoZSBzY2FsYXIgY29kZSBiZWxvdy4KLSAgICBpZiAo
IShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVhbFZlY3RvcjEpICYgMHgwRikKLSAgICAg
ICAgJiYgIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW1hZ1ZlY3RvcjEpICYgMHgwRikK
LSAgICAgICAgJiYgIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocmVhbFZlY3RvcjIpICYg
MHgwRikKLSAgICAgICAgJiYgIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW1hZzJQKSAm
IDB4MEYpCi0gICAgICAgICYmICEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHJlYWxPdXRw
dXRWZWN0b3IpICYgMHgwRikKLSAgICAgICAgJiYgIShyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oaW1hZ0Rlc3RQKSAmIDB4MEYpKSB7Ci0gICAgICAgIAorICAgIGlmIChpczE2Qnl0ZUFsaWdu
ZWQocmVhbFZlY3RvcjEpICYmIGlzMTZCeXRlQWxpZ25lZChpbWFnVmVjdG9yMSkgJiYgaXMxNkJ5
dGVBbGlnbmVkKHJlYWxWZWN0b3IyKSAmJiBpczE2Qnl0ZUFsaWduZWQoaW1hZzJQKSAmJiBpczE2
Qnl0ZUFsaWduZWQocmVhbE91dHB1dFZlY3RvcikgJiYgaXMxNkJ5dGVBbGlnbmVkKGltYWdEZXN0
UCkpIHsKICAgICAgICAgdW5zaWduZWQgZW5kU2l6ZSA9IG51bWJlck9mRWxlbWVudHNUb1Byb2Nl
c3MgLSBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzICUgNDsKICAgICAgICAgd2hpbGUgKGkgPCBl
bmRTaXplKSB7CiAgICAgICAgICAgICBfX20xMjggcmVhbDEgPSBfbW1fbG9hZF9wcyhyZWFsVmVj
dG9yMSArIGkpOwpAQCAtNTc4LDE4MSArNTI1LDE2NSBAQCB2b2lkIHp2bXVsKGNvbnN0IGZsb2F0
KiByZWFsVmVjdG9yMSwgY29uc3QgZmxvYXQqIGltYWdWZWN0b3IxLCBjb25zdCBmbG9hdCogcmVh
bAogICAgIGZvciAoOyBpIDwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsgKytpKSB7CiAgICAg
ICAgIC8vIFJlYWQgYW5kIGNvbXB1dGUgcmVzdWx0IGJlZm9yZSBzdG9yaW5nIHRoZW0sIGluIGNh
c2UgdGhlCiAgICAgICAgIC8vIGRlc3RpbmF0aW9uIGlzIHRoZSBzYW1lIGFzIG9uZSBvZiB0aGUg
c291cmNlcy4KLSAgICAgICAgZmxvYXQgcmVhbFJlc3VsdCA9IHJlYWxWZWN0b3IxW2ldICogcmVh
bFZlY3RvcjJbaV0gLSBpbWFnVmVjdG9yMVtpXSAqIGltYWcyUFtpXTsKLSAgICAgICAgZmxvYXQg
aW1hZ1Jlc3VsdCA9IHJlYWxWZWN0b3IxW2ldICogaW1hZzJQW2ldICsgaW1hZ1ZlY3RvcjFbaV0g
KiByZWFsVmVjdG9yMltpXTsKLQotICAgICAgICByZWFsT3V0cHV0VmVjdG9yW2ldID0gcmVhbFJl
c3VsdDsKLSAgICAgICAgaW1hZ0Rlc3RQW2ldID0gaW1hZ1Jlc3VsdDsKKyAgICAgICAgcmVhbE91
dHB1dFZlY3RvcltpXSA9IHJlYWxWZWN0b3IxW2ldICogcmVhbFZlY3RvcjJbaV0gLSBpbWFnVmVj
dG9yMVtpXSAqIGltYWcyUFtpXTsKKyAgICAgICAgaW1hZ0Rlc3RQW2ldID0gcmVhbFZlY3RvcjFb
aV0gKiBpbWFnMlBbaV0gKyBpbWFnVmVjdG9yMVtpXSAqIHJlYWxWZWN0b3IyW2ldOwogICAgIH0K
IH0KIAotdm9pZCB2c3Zlc3EoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJp
ZGUsIGZsb2F0KiBzdW0sIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQorZmxvYXQg
c3VtT2ZTcXVhcmVzKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxl
bWVudHNUb1Byb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHN1bSk7Ci0KLSAgICBpbnQgbiA9IG51bWJl
ck9mRWxlbWVudHNUb1Byb2Nlc3M7Ci0gICAgKnN1bSA9IDA7CisgICAgc2l6ZV90IG4gPSBudW1i
ZXJPZkVsZW1lbnRzVG9Qcm9jZXNzOworICAgIGZsb2F0IHN1bSA9IDA7CiAKICNpZiBDUFUoWDg2
X1NTRTIpCi0gICAgaWYgKGlucHV0U3RyaWRlID09IDEpIHsKLSAgICAgICAgLy8gSWYgdGhlIGlu
cHV0VmVjdG9yIGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVy
YWwgZnJhbWVzIChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGFyYXRlbHku
Ci0gICAgICAgIHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlucHV0VmVjdG9y
KSAmIDB4MEYpICYmIG4pIHsKLSAgICAgICAgICAgIGZsb2F0IHNhbXBsZSA9ICppbnB1dFZlY3Rv
cjsKLSAgICAgICAgICAgICpzdW0gKz0gc2FtcGxlICogc2FtcGxlOwotICAgICAgICAgICAgaW5w
dXRWZWN0b3IrKzsKLSAgICAgICAgICAgIG4tLTsgCi0gICAgICAgIH0gCi0gCi0gICAgICAgIC8v
IE5vdyB0aGUgaW5wdXRWZWN0b3IgaXMgYWxpZ25lZCwgdXNlIFNTRS4KLSAgICAgICAgaW50IHRh
aWxGcmFtZXMgPSBuICUgNDsgCi0gICAgICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gaW5wdXRWZWN0
b3IgKyBuIC0gdGFpbEZyYW1lczsKLSAgICAgICAgX19tMTI4IHNvdXJjZTsgCi0gICAgICAgIF9f
bTEyOCBtU3VtID0gX21tX3NldHplcm9fcHMoKTsgCi0gCi0gICAgICAgIHdoaWxlIChpbnB1dFZl
Y3RvciA8IGVuZFApIHsKLSAgICAgICAgICAgIHNvdXJjZSA9IF9tbV9sb2FkX3BzKGlucHV0VmVj
dG9yKTsKLSAgICAgICAgICAgIHNvdXJjZSA9IF9tbV9tdWxfcHMoc291cmNlLCBzb3VyY2UpOyAK
LSAgICAgICAgICAgIG1TdW0gPSBfbW1fYWRkX3BzKG1TdW0sIHNvdXJjZSk7IAotICAgICAgICAg
ICAgaW5wdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgfSAKLSAKLSAgICAgICAgLy8gU3VtbWFyaXpl
IHRoZSBTU0UgcmVzdWx0cy4gCi0gICAgICAgIGNvbnN0IGZsb2F0KiBncm91cFN1bVAgPSByZWlu
dGVycHJldF9jYXN0PGZsb2F0Kj4oJm1TdW0pOyAKLSAgICAgICAgKnN1bSArPSBncm91cFN1bVBb
MF0gKyBncm91cFN1bVBbMV0gKyBncm91cFN1bVBbMl0gKyBncm91cFN1bVBbM107Ci0gCi0gICAg
ICAgIG4gPSB0YWlsRnJhbWVzOyAKLSAgICB9IAotI2VsaWYgSEFWRShBUk1fTkVPTl9JTlRSSU5T
SUNTKQotICAgIGlmIChpbnB1dFN0cmlkZSA9PSAxKSB7Ci0gICAgICAgIGludCB0YWlsRnJhbWVz
ID0gbiAlIDQ7Ci0gICAgICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gaW5wdXRWZWN0b3IgKyBuIC0g
dGFpbEZyYW1lczsKLQotICAgICAgICBmbG9hdDMyeDRfdCBmb3VyU3VtID0gdmR1cHFfbl9mMzIo
MCk7Ci0gICAgICAgIHdoaWxlIChpbnB1dFZlY3RvciA8IGVuZFApIHsKLSAgICAgICAgICAgIGZs
b2F0MzJ4NF90IHNvdXJjZSA9IHZsZDFxX2YzMihpbnB1dFZlY3Rvcik7Ci0gICAgICAgICAgICBm
b3VyU3VtID0gdm1sYXFfZjMyKGZvdXJTdW0sIHNvdXJjZSwgc291cmNlKTsKLSAgICAgICAgICAg
IGlucHV0VmVjdG9yICs9IDQ7Ci0gICAgICAgIH0KLSAgICAgICAgZmxvYXQzMngyX3QgdHdvU3Vt
ID0gdmFkZF9mMzIodmdldF9sb3dfZjMyKGZvdXJTdW0pLCB2Z2V0X2hpZ2hfZjMyKGZvdXJTdW0p
KTsKKyAgICAvLyBJZiB0aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGln
bmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBw
cm9jZXNzZWQgc2VwYXJhdGVseS4KKyAgICB3aGlsZSAoIWlzMTZCeXRlQWxpZ25lZChpbnB1dFZl
Y3RvcikgJiYgbikgeworICAgICAgICBmbG9hdCBzYW1wbGUgPSAqaW5wdXRWZWN0b3I7CisgICAg
ICAgIHN1bSArPSBzYW1wbGUgKiBzYW1wbGU7CisgICAgICAgIGlucHV0VmVjdG9yKys7CisgICAg
ICAgIG4tLTsKKyAgICB9CisKKyAgICAvLyBOb3cgdGhlIGlucHV0VmVjdG9yIGlzIGFsaWduZWQs
IHVzZSBTU0UuCisgICAgc2l6ZV90IHRhaWxGcmFtZXMgPSBuICUgNDsKKyAgICBjb25zdCBmbG9h
dCogZW5kUCA9IGlucHV0VmVjdG9yICsgbiAtIHRhaWxGcmFtZXM7CisgICAgX19tMTI4IHNvdXJj
ZTsKKyAgICBfX20xMjggbVN1bSA9IF9tbV9zZXR6ZXJvX3BzKCk7CisKKyAgICB3aGlsZSAoaW5w
dXRWZWN0b3IgPCBlbmRQKSB7CisgICAgICAgIHNvdXJjZSA9IF9tbV9sb2FkX3BzKGlucHV0VmVj
dG9yKTsKKyAgICAgICAgc291cmNlID0gX21tX211bF9wcyhzb3VyY2UsIHNvdXJjZSk7CisgICAg
ICAgIG1TdW0gPSBfbW1fYWRkX3BzKG1TdW0sIHNvdXJjZSk7CisgICAgICAgIGlucHV0VmVjdG9y
ICs9IDQ7CisgICAgfQogCi0gICAgICAgIGZsb2F0IGdyb3VwU3VtWzJdOwotICAgICAgICB2c3Qx
X2YzMihncm91cFN1bSwgdHdvU3VtKTsKLSAgICAgICAgKnN1bSArPSBncm91cFN1bVswXSArIGdy
b3VwU3VtWzFdOworICAgIC8vIFN1bW1hcml6ZSB0aGUgU1NFIHJlc3VsdHMuCisgICAgY29uc3Qg
ZmxvYXQqIGdyb3VwU3VtUCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmbVN1bSk7CisgICAg
c3VtICs9IGdyb3VwU3VtUFswXSArIGdyb3VwU3VtUFsxXSArIGdyb3VwU3VtUFsyXSArIGdyb3Vw
U3VtUFszXTsKIAotICAgICAgICBuID0gdGFpbEZyYW1lczsKKyAgICBuID0gdGFpbEZyYW1lczsK
KyNlbGlmIEhBVkUoQVJNX05FT05fSU5UUklOU0lDUykKKyAgICBzaXplX3QgdGFpbEZyYW1lcyA9
IG4gJSA0OworICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gaW5wdXRWZWN0b3IgKyBuIC0gdGFpbEZy
YW1lczsKKworICAgIGZsb2F0MzJ4NF90IGZvdXJTdW0gPSB2ZHVwcV9uX2YzMigwKTsKKyAgICB3
aGlsZSAoaW5wdXRWZWN0b3IgPCBlbmRQKSB7CisgICAgICAgIGZsb2F0MzJ4NF90IHNvdXJjZSA9
IHZsZDFxX2YzMihpbnB1dFZlY3Rvcik7CisgICAgICAgIGZvdXJTdW0gPSB2bWxhcV9mMzIoZm91
clN1bSwgc291cmNlLCBzb3VyY2UpOworICAgICAgICBpbnB1dFZlY3RvciArPSA0OwogICAgIH0K
KyAgICBmbG9hdDMyeDJfdCB0d29TdW0gPSB2YWRkX2YzMih2Z2V0X2xvd19mMzIoZm91clN1bSks
IHZnZXRfaGlnaF9mMzIoZm91clN1bSkpOworCisgICAgZmxvYXQgZ3JvdXBTdW1bMl07CisgICAg
dnN0MV9mMzIoZ3JvdXBTdW0sIHR3b1N1bSk7CisgICAgc3VtICs9IGdyb3VwU3VtWzBdICsgZ3Jv
dXBTdW1bMV07CisKKyAgICBuID0gdGFpbEZyYW1lczsKICNlbmRpZgogCiAgICAgd2hpbGUgKG4t
LSkgewogICAgICAgICBmbG9hdCBzYW1wbGUgPSAqaW5wdXRWZWN0b3I7Ci0gICAgICAgICpzdW0g
Kz0gc2FtcGxlICogc2FtcGxlOwotICAgICAgICBpbnB1dFZlY3RvciArPSBpbnB1dFN0cmlkZTsK
KyAgICAgICAgc3VtICs9IHNhbXBsZSAqIHNhbXBsZTsKKyAgICAgICAgKytpbnB1dFZlY3RvcjsK
ICAgICB9CisKKyAgICByZXR1cm4gc3VtOwogfQogCi12b2lkIHZtYXhtZ3YoY29uc3QgZmxvYXQq
IGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJpZGUsIGZsb2F0KiBtYXhpbXVtVmFsdWUsIHNpemVf
dCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQorZmxvYXQgbWF4aW11bU1hZ25pdHVkZShjb25z
dCBmbG9hdCogaW5wdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQog
ewotICAgIGludCBuID0gbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2VzczsKKyAgICBzaXplX3QgbiA9
IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3M7CiAgICAgZmxvYXQgbWF4ID0gMDsKIAogI2lmIENQ
VShYODZfU1NFMikKLSAgICBpZiAoaW5wdXRTdHJpZGUgPT0gMSkgewotICAgICAgICAvLyBJZiB0
aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBpcyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qg
c2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3QgdGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJh
dGVseS4KLSAgICAgICAgd2hpbGUgKChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5wdXRW
ZWN0b3IpICYgMHgwRikgJiYgbikgewotICAgICAgICAgICAgbWF4ID0gc3RkOjptYXgobWF4LCBm
YWJzZigqaW5wdXRWZWN0b3IpKTsKLSAgICAgICAgICAgIGlucHV0VmVjdG9yKys7Ci0gICAgICAg
ICAgICBuLS07Ci0gICAgICAgIH0KKyAgICAvLyBJZiB0aGUgaW5wdXRWZWN0b3IgYWRkcmVzcyBp
cyBub3QgMTYtYnl0ZSBhbGlnbmVkLCB0aGUgZmlyc3Qgc2V2ZXJhbCBmcmFtZXMgKGF0IG1vc3Qg
dGhyZWUpIHNob3VsZCBiZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4KKyAgICB3aGlsZSAoIWlzMTZC
eXRlQWxpZ25lZChpbnB1dFZlY3RvcikgJiYgbikgeworICAgICAgICBtYXggPSBzdGQ6Om1heCht
YXgsIHN0ZDo6YWJzKCppbnB1dFZlY3RvcikpOworICAgICAgICBpbnB1dFZlY3RvcisrOworICAg
ICAgICBuLS07CisgICAgfQogCi0gICAgICAgIC8vIE5vdyB0aGUgaW5wdXRWZWN0b3IgaXMgYWxp
Z25lZCwgdXNlIFNTRS4KLSAgICAgICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICAgICAg
Y29uc3QgZmxvYXQqIGVuZFAgPSBpbnB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOwotICAgICAg
ICBfX20xMjggc291cmNlOwotICAgICAgICBfX20xMjggbU1heCA9IF9tbV9zZXR6ZXJvX3BzKCk7
Ci0gICAgICAgIGludCBtYXNrID0gMHg3RkZGRkZGRjsKLSAgICAgICAgX19tMTI4IG1NYXNrID0g
X21tX3NldDFfcHMoKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmbWFzaykpOwotCi0gICAgICAg
IHdoaWxlIChpbnB1dFZlY3RvciA8IGVuZFApIHsKLSAgICAgICAgICAgIHNvdXJjZSA9IF9tbV9s
b2FkX3BzKGlucHV0VmVjdG9yKTsKLSAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYWJzb2x1
dGUgdmFsdWUgYnkgYW5kaW5nIHNvdXJjZSB3aXRoIG1hc2ssIHRoZSBzaWduIGJpdCBpcyBzZXQg
dG8gMC4KLSAgICAgICAgICAgIHNvdXJjZSA9IF9tbV9hbmRfcHMoc291cmNlLCBtTWFzayk7Ci0g
ICAgICAgICAgICBtTWF4ID0gX21tX21heF9wcyhtTWF4LCBzb3VyY2UpOwotICAgICAgICAgICAg
aW5wdXRWZWN0b3IgKz0gNDsKLSAgICAgICAgfQorICAgIC8vIE5vdyB0aGUgaW5wdXRWZWN0b3Ig
aXMgYWxpZ25lZCwgdXNlIFNTRS4KKyAgICBzaXplX3QgdGFpbEZyYW1lcyA9IG4gJSA0OworICAg
IGNvbnN0IGZsb2F0KiBlbmRQID0gaW5wdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKKyAgICBf
X20xMjggc291cmNlOworICAgIF9fbTEyOCBtTWF4ID0gX21tX3NldHplcm9fcHMoKTsKKyAgICBp
bnQgbWFzayA9IDB4N0ZGRkZGRkY7CisgICAgX19tMTI4IG1NYXNrID0gX21tX3NldDFfcHMoKnJl
aW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmbWFzaykpOworCisgICAgd2hpbGUgKGlucHV0VmVjdG9y
IDwgZW5kUCkgeworICAgICAgICBzb3VyY2UgPSBfbW1fbG9hZF9wcyhpbnB1dFZlY3Rvcik7Cisg
ICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYWJzb2x1dGUgdmFsdWUgYnkgYW5kaW5nIHNvdXJjZSB3
aXRoIG1hc2ssIHRoZSBzaWduIGJpdCBpcyBzZXQgdG8gMC4KKyAgICAgICAgc291cmNlID0gX21t
X2FuZF9wcyhzb3VyY2UsIG1NYXNrKTsKKyAgICAgICAgbU1heCA9IF9tbV9tYXhfcHMobU1heCwg
c291cmNlKTsKKyAgICAgICAgaW5wdXRWZWN0b3IgKz0gNDsKKyAgICB9CiAKLSAgICAgICAgLy8g
R2V0IG1heCBmcm9tIHRoZSBTU0UgcmVzdWx0cy4KLSAgICAgICAgY29uc3QgZmxvYXQqIGdyb3Vw
TWF4UCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPigmbU1heCk7Ci0gICAgICAgIG1heCA9IHN0
ZDo6bWF4KG1heCwgZ3JvdXBNYXhQWzBdKTsKLSAgICAgICAgbWF4ID0gc3RkOjptYXgobWF4LCBn
cm91cE1heFBbMV0pOwotICAgICAgICBtYXggPSBzdGQ6Om1heChtYXgsIGdyb3VwTWF4UFsyXSk7
Ci0gICAgICAgIG1heCA9IHN0ZDo6bWF4KG1heCwgZ3JvdXBNYXhQWzNdKTsKKyAgICAvLyBHZXQg
bWF4IGZyb20gdGhlIFNTRSByZXN1bHRzLgorICAgIGNvbnN0IGZsb2F0KiBncm91cE1heFAgPSBy
ZWludGVycHJldF9jYXN0PGZsb2F0Kj4oJm1NYXgpOworICAgIG1heCA9IHN0ZDo6bWF4KG1heCwg
Z3JvdXBNYXhQWzBdKTsKKyAgICBtYXggPSBzdGQ6Om1heChtYXgsIGdyb3VwTWF4UFsxXSk7Cisg
ICAgbWF4ID0gc3RkOjptYXgobWF4LCBncm91cE1heFBbMl0pOworICAgIG1heCA9IHN0ZDo6bWF4
KG1heCwgZ3JvdXBNYXhQWzNdKTsKIAotICAgICAgICBuID0gdGFpbEZyYW1lczsKLSAgICB9Cisg
ICAgbiA9IHRhaWxGcmFtZXM7CiAjZWxpZiBIQVZFKEFSTV9ORU9OX0lOVFJJTlNJQ1MpCi0gICAg
aWYgKGlucHV0U3RyaWRlID09IDEpIHsKLSAgICAgICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsK
LSAgICAgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBpbnB1dFZlY3RvciArIG4gLSB0YWlsRnJhbWVz
OwotCi0gICAgICAgIGZsb2F0MzJ4NF90IGZvdXJNYXggPSB2ZHVwcV9uX2YzMigwKTsKLSAgICAg
ICAgd2hpbGUgKGlucHV0VmVjdG9yIDwgZW5kUCkgewotICAgICAgICAgICAgZmxvYXQzMng0X3Qg
c291cmNlID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yKTsKLSAgICAgICAgICAgIGZvdXJNYXggPSB2
bWF4cV9mMzIoZm91ck1heCwgdmFic3FfZjMyKHNvdXJjZSkpOwotICAgICAgICAgICAgaW5wdXRW
ZWN0b3IgKz0gNDsKLSAgICAgICAgfQotICAgICAgICBmbG9hdDMyeDJfdCB0d29NYXggPSB2bWF4
X2YzMih2Z2V0X2xvd19mMzIoZm91ck1heCksIHZnZXRfaGlnaF9mMzIoZm91ck1heCkpOworICAg
IHNpemVfdCB0YWlsRnJhbWVzID0gbiAlIDQ7CisgICAgY29uc3QgZmxvYXQqIGVuZFAgPSBpbnB1
dFZlY3RvciArIG4gLSB0YWlsRnJhbWVzOworCisgICAgZmxvYXQzMng0X3QgZm91ck1heCA9IHZk
dXBxX25fZjMyKDApOworICAgIHdoaWxlIChpbnB1dFZlY3RvciA8IGVuZFApIHsKKyAgICAgICAg
ZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFfZjMyKGlucHV0VmVjdG9yKTsKKyAgICAgICAgZm91
ck1heCA9IHZtYXhxX2YzMihmb3VyTWF4LCB2YWJzcV9mMzIoc291cmNlKSk7CisgICAgICAgIGlu
cHV0VmVjdG9yICs9IDQ7CisgICAgfQorICAgIGZsb2F0MzJ4Ml90IHR3b01heCA9IHZtYXhfZjMy
KHZnZXRfbG93X2YzMihmb3VyTWF4KSwgdmdldF9oaWdoX2YzMihmb3VyTWF4KSk7CiAKLSAgICAg
ICAgZmxvYXQgZ3JvdXBNYXhbMl07Ci0gICAgICAgIHZzdDFfZjMyKGdyb3VwTWF4LCB0d29NYXgp
OwotICAgICAgICBtYXggPSBzdGQ6Om1heChncm91cE1heFswXSwgZ3JvdXBNYXhbMV0pOworICAg
IGZsb2F0IGdyb3VwTWF4WzJdOworICAgIHZzdDFfZjMyKGdyb3VwTWF4LCB0d29NYXgpOworICAg
IG1heCA9IHN0ZDo6bWF4KGdyb3VwTWF4WzBdLCBncm91cE1heFsxXSk7CiAKLSAgICAgICAgbiA9
IHRhaWxGcmFtZXM7Ci0gICAgfQorICAgIG4gPSB0YWlsRnJhbWVzOwogI2VuZGlmCiAKICAgICB3
aGlsZSAobi0tKSB7Ci0gICAgICAgIG1heCA9IHN0ZDo6bWF4KG1heCwgZmFic2YoKmlucHV0VmVj
dG9yKSk7Ci0gICAgICAgIGlucHV0VmVjdG9yICs9IGlucHV0U3RyaWRlOworICAgICAgICBtYXgg
PSBzdGQ6Om1heChtYXgsIHN0ZDo6YWJzKCppbnB1dFZlY3RvcikpOworICAgICAgICArK2lucHV0
VmVjdG9yOwogICAgIH0KIAotICAgIEFTU0VSVChtYXhpbXVtVmFsdWUpOwotICAgICptYXhpbXVt
VmFsdWUgPSBtYXg7CisgICAgcmV0dXJuIG1heDsKIH0KIAotdm9pZCB2Y2xpcChjb25zdCBmbG9h
dCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0cmlkZSwgY29uc3QgZmxvYXQqIGxvd1RocmVzaG9s
ZFAsIGNvbnN0IGZsb2F0KiBoaWdoVGhyZXNob2xkUCwgZmxvYXQqIG91dHB1dFZlY3RvciwgaW50
IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpCit2b2lkIGNs
YW1wKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgZmxvYXQgbWluaW11bSwgZmxvYXQgbWF4aW11
bSwgZmxvYXQqIG91dHB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3Mp
CiB7Ci0gICAgaW50IG4gPSBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzOwotICAgIGZsb2F0IGxv
d1RocmVzaG9sZCA9ICpsb3dUaHJlc2hvbGRQOwotICAgIGZsb2F0IGhpZ2hUaHJlc2hvbGQgPSAq
aGlnaFRocmVzaG9sZFA7CisgICAgc2l6ZV90IG4gPSBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNz
OwogCiAgICAgLy8gRklYTUU6IE9wdGltaXplIGZvciBTU0UyLgogI2lmIEhBVkUoQVJNX05FT05f
SU5UUklOU0lDUykKLSAgICBpZiAoKGlucHV0U3RyaWRlID09IDEpICYmIChvdXRwdXRTdHJpZGUg
PT0gMSkpIHsKLSAgICAgICAgaW50IHRhaWxGcmFtZXMgPSBuICUgNDsKLSAgICAgICAgY29uc3Qg
ZmxvYXQqIGVuZFAgPSBvdXRwdXRWZWN0b3IgKyBuIC0gdGFpbEZyYW1lczsKLQotICAgICAgICBm
bG9hdDMyeDRfdCBsb3cgPSB2ZHVwcV9uX2YzMihsb3dUaHJlc2hvbGQpOwotICAgICAgICBmbG9h
dDMyeDRfdCBoaWdoID0gdmR1cHFfbl9mMzIoaGlnaFRocmVzaG9sZCk7Ci0gICAgICAgIHdoaWxl
IChvdXRwdXRWZWN0b3IgPCBlbmRQKSB7Ci0gICAgICAgICAgICBmbG9hdDMyeDRfdCBzb3VyY2Ug
PSB2bGQxcV9mMzIoaW5wdXRWZWN0b3IpOwotICAgICAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZl
Y3Rvciwgdm1heHFfZjMyKHZtaW5xX2YzMihzb3VyY2UsIGhpZ2gpLCBsb3cpKTsKLSAgICAgICAg
ICAgIGlucHV0VmVjdG9yICs9IDQ7Ci0gICAgICAgICAgICBvdXRwdXRWZWN0b3IgKz0gNDsKLSAg
ICAgICAgfQotICAgICAgICBuID0gdGFpbEZyYW1lczsKKyAgICBzaXplX3QgdGFpbEZyYW1lcyA9
IG4gJSA0OworICAgIGNvbnN0IGZsb2F0KiBlbmRQID0gb3V0cHV0VmVjdG9yICsgbiAtIHRhaWxG
cmFtZXM7CisKKyAgICBmbG9hdDMyeDRfdCBsb3cgPSB2ZHVwcV9uX2YzMihtaW5pbXVtKTsKKyAg
ICBmbG9hdDMyeDRfdCBoaWdoID0gdmR1cHFfbl9mMzIobWF4aW11bSk7CisgICAgd2hpbGUgKG91
dHB1dFZlY3RvciA8IGVuZFApIHsKKyAgICAgICAgZmxvYXQzMng0X3Qgc291cmNlID0gdmxkMXFf
ZjMyKGlucHV0VmVjdG9yKTsKKyAgICAgICAgdnN0MXFfZjMyKG91dHB1dFZlY3Rvciwgdm1heHFf
ZjMyKHZtaW5xX2YzMihzb3VyY2UsIGhpZ2gpLCBsb3cpKTsKKyAgICAgICAgaW5wdXRWZWN0b3Ig
Kz0gNDsKKyAgICAgICAgb3V0cHV0VmVjdG9yICs9IDQ7CiAgICAgfQorICAgIG4gPSB0YWlsRnJh
bWVzOwogI2VuZGlmCiAgICAgd2hpbGUgKG4tLSkgewotICAgICAgICAqb3V0cHV0VmVjdG9yID0g
c3RkOjptYXgoc3RkOjptaW4oKmlucHV0VmVjdG9yLCBoaWdoVGhyZXNob2xkKSwgbG93VGhyZXNo
b2xkKTsKLSAgICAgICAgaW5wdXRWZWN0b3IgKz0gaW5wdXRTdHJpZGU7Ci0gICAgICAgIG91dHB1
dFZlY3RvciArPSBvdXRwdXRTdHJpZGU7CisgICAgICAgICpvdXRwdXRWZWN0b3IgPSBzdGQ6OmNs
YW1wKCppbnB1dFZlY3RvciwgbWluaW11bSwgbWF4aW11bSk7CisgICAgICAgICsraW5wdXRWZWN0
b3I7CisgICAgICAgICsrb3V0cHV0VmVjdG9yOwogICAgIH0KIH0KIAotdm9pZCBsaW5lYXJUb0Rl
Y2liZWxzKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvciwgaW50IGlucHV0U3RyaWRlLCBmbG9hdCog
b3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1Rv
UHJvY2VzcykKK3ZvaWQgbGluZWFyVG9EZWNpYmVscyhjb25zdCBmbG9hdCogaW5wdXRWZWN0b3Is
IGZsb2F0KiBvdXRwdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKQog
ewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzczsg
KytpLCBpbnB1dFZlY3RvciArPSBpbnB1dFN0cmlkZSwgb3V0cHV0VmVjdG9yICs9IG91dHB1dFN0
cmlkZSkKLSAgICAgICAgKm91dHB1dFZlY3RvciA9IEF1ZGlvVXRpbGl0aWVzOjpsaW5lYXJUb0Rl
Y2liZWxzKCppbnB1dFZlY3Rvcik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJP
ZkVsZW1lbnRzVG9Qcm9jZXNzOyArK2kpCisgICAgICAgIG91dHB1dFZlY3RvcltpXSA9IEF1ZGlv
VXRpbGl0aWVzOjpsaW5lYXJUb0RlY2liZWxzKGlucHV0VmVjdG9yW2ldKTsKIH0KIAogI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vVmVjdG9yTWF0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9y
TWF0aC5oCmluZGV4IDhiOGI3MTk5MTBjYjI4NGE5YTQyZWQzYjc1N2QxMDhmMjkwZWU2MDQuLjhh
MWU3ZjVmZWQ3ZmY3NTUwYWM5YTdmYmIwYWEwYTViZGI2NDM4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwLCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDggKzIzLDcgQEAKICAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgVmVjdG9yTWF0aF9oCi0jZGVmaW5lIFZlY3Rvck1hdGhfaAorI3ByYWdtYSBvbmNl
CiAKIC8vIERlZmluZXMgdGhlIGludGVyZmFjZSBmb3Igc2V2ZXJhbCB2ZWN0b3IgbWF0aCBmdW5j
dGlvbnMgd2hvc2UgaW1wbGVtZW50YXRpb24gd2lsbCBpZGVhbGx5IGJlIG9wdGltaXplZC4KIApA
QCAtMzEsMzIgKzMxLDMwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFZlY3Rv
ck1hdGggewogCi0vLyBWZWN0b3Igc2NhbGFyIG11bHRpcGx5IGFuZCB0aGVuIGFkZC4KLXZvaWQg
dnNtYShjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0cmlkZSwgY29uc3QgZmxv
YXQqIHNjYWxlLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0U3RyaWRlLCBzaXplX3Qg
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CisvLyBWZWN0b3Igc2NhbGFyIG11bHRpcGx5IGFu
ZCB0aGVuIGFkZCAodnNtYSkuCit2b2lkIG11bHRpcGx5VGhlbkFkZFNjYWxhcihjb25zdCBmbG9h
dCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxlLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBzaXplX3Qg
bnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CiAKLXZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIGlu
cHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIG91
dHB1dFZlY3RvciwgaW50IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1By
b2Nlc3MpOwotdm9pZCB2c2FkZChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0
cmlkZSwgY29uc3QgZmxvYXQqIHNjYWxhciwgZmxvYXQqIG91dHB1dFZlY3RvciwgaW50IG91dHB1
dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwotdm9pZCB2YWRkKGNv
bnN0IGZsb2F0KiBpbnB1dFZlY3RvcjEsIGludCBpbnB1dFN0cmlkZTEsIGNvbnN0IGZsb2F0KiBp
bnB1dFZlY3RvcjIsIGludCBpbnB1dFN0cmlkZTIsIGZsb2F0KiBvdXRwdXRWZWN0b3IsIGludCBv
dXRwdXRTdHJpZGUsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKK3ZvaWQgbXVs
dGlwbHlCeVNjYWxhcihjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxlLCBmbG9h
dCogb3V0cHV0VmVjdG9yLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7Cit2b2lk
IGFkZFNjYWxhcihjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IHNjYWxhciwgZmxvYXQq
IG91dHB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwordm9pZCBh
ZGQoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMSwgY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yMiwg
ZmxvYXQqIG91dHB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwog
CiAvLyBGaW5kcyB0aGUgbWF4aW11bSBtYWduaXR1ZGUgb2YgYSBmbG9hdCB2ZWN0b3IuCi12b2lk
IHZtYXhtZ3YoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBpbnQgaW5wdXRTdHJpZGUsIGZsb2F0
KiBtYXhpbXVtVmFsdWUsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKK2Zsb2F0
IG1heGltdW1NYWduaXR1ZGUoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBzaXplX3QgbnVtYmVy
T2ZFbGVtZW50c1RvUHJvY2Vzcyk7CiAKLS8vIFN1bXMgdGhlIHNxdWFyZXMgb2YgYSBmbG9hdCB2
ZWN0b3IncyBlbGVtZW50cy4KLXZvaWQgdnN2ZXNxKGNvbnN0IGZsb2F0KiBpbnB1dFZlY3Rvciwg
aW50IGlucHV0U3RyaWRlLCBmbG9hdCogc3VtLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJv
Y2Vzcyk7CisvLyBTdW1zIHRoZSBzcXVhcmVzIG9mIGEgZmxvYXQgdmVjdG9yJ3MgZWxlbWVudHMg
KHN2ZXNxKS4KK2Zsb2F0IHN1bU9mU3F1YXJlcyhjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIHNp
emVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKIAogLy8gRm9yIGFuIGVsZW1lbnQtYnkt
ZWxlbWVudCBtdWx0aXBseSBvZiB0d28gZmxvYXQgdmVjdG9ycy4KLXZvaWQgdm11bChjb25zdCBm
bG9hdCogaW5wdXRWZWN0b3IxLCBpbnQgaW5wdXRTdHJpZGUxLCBjb25zdCBmbG9hdCogaW5wdXRW
ZWN0b3IyLCBpbnQgaW5wdXRTdHJpZGUyLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0
U3RyaWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7Cit2b2lkIG11bHRpcGx5
KGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjEsIGNvbnN0IGZsb2F0KiBpbnB1dFZlY3RvcjIsIGZs
b2F0KiBvdXRwdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1lbnRzVG9Qcm9jZXNzKTsKIAot
Ly8gTXVsdGlwbGllcyB0d28gY29tcGxleCB2ZWN0b3JzLgotdm9pZCB6dm11bChjb25zdCBmbG9h
dCogcmVhbFZlY3RvcjEsIGNvbnN0IGZsb2F0KiBpbWFnVmVjdG9yMSwgY29uc3QgZmxvYXQqIHJl
YWxWZWN0b3IyLCBjb25zdCBmbG9hdCogaW1hZ1ZlY3RvcjIsIGZsb2F0KiByZWFsT3V0cHV0VmVj
dG9yLCBmbG9hdCogaW1hZ091dHB1dFZlY3Rvciwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1By
b2Nlc3MpOworLy8gTXVsdGlwbGllcyB0d28gY29tcGxleCB2ZWN0b3JzICh6dm11bCkuCit2b2lk
IG11bHRpcGx5Q29tcGxleChjb25zdCBmbG9hdCogcmVhbFZlY3RvcjEsIGNvbnN0IGZsb2F0KiBp
bWFnVmVjdG9yMSwgY29uc3QgZmxvYXQqIHJlYWxWZWN0b3IyLCBjb25zdCBmbG9hdCogaW1hZ1Zl
Y3RvcjIsIGZsb2F0KiByZWFsT3V0cHV0VmVjdG9yLCBmbG9hdCogaW1hZ091dHB1dFZlY3Rvciwg
c2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nlc3MpOwogCiAvLyBDb3BpZXMgZWxlbWVudHMg
d2hpbGUgY2xpcHBpbmcgdmFsdWVzIHRvIHRoZSB0aHJlc2hvbGQgaW5wdXRzLgotdm9pZCB2Y2xp
cChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGludCBpbnB1dFN0cmlkZSwgY29uc3QgZmxvYXQq
IGxvd1RocmVzaG9sZFAsIGNvbnN0IGZsb2F0KiBoaWdoVGhyZXNob2xkUCwgZmxvYXQqIG91dHB1
dFZlY3RvciwgaW50IG91dHB1dFN0cmlkZSwgc2l6ZV90IG51bWJlck9mRWxlbWVudHNUb1Byb2Nl
c3MpOwordm9pZCBjbGFtcChjb25zdCBmbG9hdCogaW5wdXRWZWN0b3IsIGZsb2F0IG1pbmludW0s
IGZsb2F0IG1heGltdW0sIGZsb2F0KiBvdXRwdXRWZWN0b3IsIHNpemVfdCBudW1iZXJPZkVsZW1l
bnRzVG9Qcm9jZXNzKTsKIAotdm9pZCBsaW5lYXJUb0RlY2liZWxzKGNvbnN0IGZsb2F0KiBpbnB1
dFZlY3RvciwgaW50IGlucHV0U3RyaWRlLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBpbnQgb3V0cHV0
U3RyaWRlLCBzaXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7Cit2b2lkIGxpbmVhclRv
RGVjaWJlbHMoY29uc3QgZmxvYXQqIGlucHV0VmVjdG9yLCBmbG9hdCogb3V0cHV0VmVjdG9yLCBz
aXplX3QgbnVtYmVyT2ZFbGVtZW50c1RvUHJvY2Vzcyk7CiAKIH0gLy8gbmFtZXNwYWNlIFZlY3Rv
ck1hdGgKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVmVjdG9yTWF0aF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZU
RnJhbWVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0ZGVEZyYW1lR1N0cmVhbWVyLmNwcAppbmRleCBhMTVkNTFlZjk5ZTFkOGJjNTczYTJlYjQ1
N2NjNDUwZDE4YjY1NjMxLi40ZGMxMzFhNjg5ZjNmNGJjOTNmNzJjNmMzY2Y3NDgyMzBlNDI5ZjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvRkZU
RnJhbWVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9GRlRGcmFtZUdTdHJlYW1lci5jcHAKQEAgLTEyOSw4ICsxMjksNyBAQCB2b2lkIEZG
VEZyYW1lOjpkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpCiAgICAgZ3N0X2ZmdF9mMzJfaW52ZXJz
ZV9mZnQobV9pbnZlcnNlRmZ0LCBtX2NvbXBsZXhEYXRhLmdldCgpLCBkYXRhKTsKIAogICAgIC8v
IFNjYWxlIHNvIHRoYXQgYSBmb3J3YXJkIHRoZW4gaW52ZXJzZSBGRlQgeWllbGRzIGV4YWN0bHkg
dGhlIG9yaWdpbmFsIGRhdGEuCi0gICAgY29uc3QgZmxvYXQgc2NhbGVGYWN0b3IgPSAxLjAgLyBt
X0ZGVFNpemU7Ci0gICAgVmVjdG9yTWF0aDo6dnNtdWwoZGF0YSwgMSwgJnNjYWxlRmFjdG9yLCBk
YXRhLCAxLCBtX0ZGVFNpemUpOworICAgIFZlY3Rvck1hdGg6Om11bHRpcGx5QnlTY2FsYXIoZGF0
YSwgMS4wIC8gbV9GRlRTaXplLCBkYXRhLCBtX0ZGVFNpemUpOwogfQogCiBmbG9hdCogRkZURnJh
bWU6OnJlYWxEYXRhKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAppbmRleCBmZjY5NDNiMzgwM2Ex
YjI1NTJiNThlYzI3MjUwMTQ1Y2Q4ZWE0OGEyLi43MGY5YzlmZmY1MWY0ODNiNDQwNDFhMzc3MWZi
NDE4N2E3YWVkYTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCkBAIC03NSwxMyArNzUsMTEgQEAgdm9p
ZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OmNvbmZpZ3VyZSgpCiAKIHZvaWQgQXVkaW9EZXN0aW5h
dGlvbkNvY29hOjpwcm9jZXNzQnVzQWZ0ZXJSZW5kZXIoQXVkaW9CdXMmIGJ1cywgVUludDMyIG51
bWJlck9mRnJhbWVzKQogewotICAgIGNvbnN0IGZsb2F0IGtMb3dUaHJlc2hvbGQgPSAtMTsKLSAg
ICBjb25zdCBmbG9hdCBrSGlnaFRocmVzaG9sZCA9IDE7CiAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0
IDBkYiAoaS5lLiwgWy0xLjAsIDEuMF0pCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJ1
cy5udW1iZXJPZkNoYW5uZWxzKCk7ICsraSkgewogICAgICAgICBhdXRvKiBjaGFubmVsID0gYnVz
LmNoYW5uZWwoaSk7CiAgICAgICAgIGlmICghY2hhbm5lbC0+aXNTaWxlbnQoKSkKLSAgICAgICAg
ICAgIFZlY3Rvck1hdGg6OnZjbGlwKGNoYW5uZWwtPmRhdGEoKSwgMSwgJmtMb3dUaHJlc2hvbGQs
ICZrSGlnaFRocmVzaG9sZCwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgMSwgbnVtYmVyT2ZGcmFt
ZXMpOworICAgICAgICAgICAgVmVjdG9yTWF0aDo6Y2xhbXAoY2hhbm5lbC0+ZGF0YSgpLCAtMSwg
MSwgY2hhbm5lbC0+bXV0YWJsZURhdGEoKSwgbnVtYmVyT2ZGcmFtZXMpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2FtcGxl
QnVmZmVyTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcAppbmRleCA3ODI0MjZiYTg2OTI5YzhmZDY2YjJiNTM2ZDc1Nzdi
ZTVlNDBjODM4Li43N2ZjMDJkOGQ5MDNlNzAyYWRlMjI0NjRlYzljODFhNjg2ZTg0MDU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TYW1wbGVCdWZm
ZXJMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9T
YW1wbGVCdWZmZXJMaXN0LmNwcApAQCAtMzYsOCArMzYsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBWZWN0b3JNYXRoOwotCiBSZWY8QXVkaW9TYW1wbGVCdWZm
ZXJMaXN0PiBBdWRpb1NhbXBsZUJ1ZmZlckxpc3Q6OmNyZWF0ZShjb25zdCBDQUF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24mIGZvcm1hdCwgc2l6ZV90IG1heGltdW1TYW1wbGVDb3VudCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1NhbXBsZUJ1ZmZlckxpc3QoZm9ybWF0LCBtYXhpbXVt
U2FtcGxlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9GRlRGcmFtZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMv
RkZURnJhbWVNYWMuY3BwCmluZGV4IDM3YmU3YTZmZWI3MWMwMWI0ZWY2NTg0ZTUxZWZlOWMwYWZm
ZGI0MmUuLjVjNzc3NGVjZTcyMzlmMDQ1ZTAwYjFjODJmZjlkMTk3N2JlZmY2OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9GRlRGcmFtZU1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0ZGVEZyYW1lTWFjLmNwcApAQCAt
MTA4LDEwICsxMDgsOCBAQCB2b2lkIEZGVEZyYW1lOjpkb0ZGVChjb25zdCBmbG9hdCogZGF0YSkK
ICAgICAvLyAoU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9saWJyYXJ5L2FyY2hpdmUv
ZG9jdW1lbnRhdGlvbi9QZXJmb3JtYW5jZS9Db25jZXB0dWFsL3ZEU1BfUHJvZ3JhbW1pbmdfR3Vp
ZGUvVXNpbmdGb3VyaWVyVHJhbnNmb3Jtcy9Vc2luZ0ZvdXJpZXJUcmFuc2Zvcm1zLmh0bWwjLy9h
cHBsZV9yZWYvZG9jL3VpZC9UUDQwMDA1MTQ3LUNIMy1TVzUpCiAgICAgLy8gSW4gdGhlIGNhc2Ug
b2YgYSBSZWFsIGZvcndhcmQgVHJhbnNmb3JtIGxpa2UgYWJvdmU6IFJGaW1wID0gUkZtYXRoICog
MiBzbyB3ZSBuZWVkIHRvIGRpdmlkZSB0aGUgb3V0cHV0CiAgICAgLy8gYnkgMiB0byBnZXQgdGhl
IGNvcnJlY3QgdmFsdWUuCi0gICAgZmxvYXQgc2NhbGUgPSAwLjVmOwotCi0gICAgVmVjdG9yTWF0
aDo6dnNtdWwocmVhbERhdGEoKSwgMSwgJnNjYWxlLCByZWFsRGF0YSgpLCAxLCBoYWxmU2l6ZSk7
Ci0gICAgVmVjdG9yTWF0aDo6dnNtdWwoaW1hZ0RhdGEoKSwgMSwgJnNjYWxlLCBpbWFnRGF0YSgp
LCAxLCBoYWxmU2l6ZSk7CisgICAgVmVjdG9yTWF0aDo6bXVsdGlwbHlCeVNjYWxhcihyZWFsRGF0
YSgpLCAwLjUsIHJlYWxEYXRhKCksIGhhbGZTaXplKTsKKyAgICBWZWN0b3JNYXRoOjptdWx0aXBs
eUJ5U2NhbGFyKGltYWdEYXRhKCksIDAuNSwgaW1hZ0RhdGEoKSwgaGFsZlNpemUpOwogfQogCiB2
b2lkIEZGVEZyYW1lOjpkb0ludmVyc2VGRlQoZmxvYXQqIGRhdGEpCkBAIC0xMjAsOCArMTE4LDcg
QEAgdm9pZCBGRlRGcmFtZTo6ZG9JbnZlcnNlRkZUKGZsb2F0KiBkYXRhKQogICAgIHZEU1BfenRv
YygmbV9mcmFtZSwgMSwgKERTUENvbXBsZXgqKWRhdGEsIDIsIG1fRkZUU2l6ZSAvIDIpOwogCiAg
ICAgLy8gRG8gZmluYWwgc2NhbGluZyBzbyB0aGF0IHggPT0gSUZGVChGRlQoeCkpCi0gICAgZmxv
YXQgc2NhbGUgPSAxLjBmIC8gbV9GRlRTaXplOwotICAgIFZlY3Rvck1hdGg6OnZzbXVsKGRhdGEs
IDEsICZzY2FsZSwgZGF0YSwgMSwgbV9GRlRTaXplKTsKKyAgICBWZWN0b3JNYXRoOjptdWx0aXBs
eUJ5U2NhbGFyKGRhdGEsIDEuMGYgLyBtX0ZGVFNpemUsIGRhdGEsIG1fRkZUU2l6ZSk7CiB9CiAK
IEZGVFNldHVwIEZGVEZyYW1lOjpmZnRTZXR1cEZvclNpemUodW5zaWduZWQgZmZ0U2l6ZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>