<?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>180015</bug_id>
          
          <creation_ts>2017-11-26 06:56:51 -0800</creation_ts>
          <short_desc>[DFG][FTL] WeakMap#set should have DFG node</short_desc>
          <delta_ts>2018-01-29 01:26:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>
          <dependson>179929</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1374724</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-11-26 06:56:51 -0800</bug_when>
    <thetext>And we should make it participate in CSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383126</commentid>
    <comment_count>1</comment_count>
      <attachid>329759</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-19 06:48:45 -0800</bug_when>
    <thetext>Created attachment 329759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391886</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-22 17:03:41 -0800</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393992</commentid>
    <comment_count>3</comment_count>
      <attachid>329759</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-28 23:54:11 -0800</bug_when>
    <thetext>Comment on attachment 329759
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        WeakMap operations do not cause GC.

Maybe it&apos;s worth documenting this in WeakMapImpl that the compiler depends on this now.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1666
&gt; +    case WeakSetAdd: {

I wonder if it&apos;s worth commenting on the subtlety here, since intervening operations could have caused a GC. Since we&apos;re keeping the key alive though, it&apos;s guaranteed that CSE should return the actual state of the map, since if the key is alive, and we prove it&apos;s there via CSE, that must be the state of the map. I guess there are times we should have code like this:

function foo(s, k) {
    let a = s.has(k);
    new Array; // causes a GC, and clears k
    let b = s.has(k); // this turns into nothing, and we don&apos;t conservatively keep k alive
}

both b and a may be true, even though the GC may have cleared k from the map. But, I think this is fine semantically in JS. The only thing that would not be semantically OK would be to observe some sort of time travel in result operations, but I don&apos;t think that&apos;s possible, because it wouldn&apos;t be possible via liveness of the key to do such a thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394010</commentid>
    <comment_count>4</comment_count>
      <attachid>329759</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-29 01:22:54 -0800</bug_when>
    <thetext>Comment on attachment 329759
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:21
&gt;&gt; +        WeakMap operations do not cause GC.
&gt; 
&gt; Maybe it&apos;s worth documenting this in WeakMapImpl that the compiler depends on this now.

OK, done. We also ensured this by using DisallowGC in WeakMapImpl.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1666
&gt;&gt; +    case WeakSetAdd: {
&gt; 
&gt; I wonder if it&apos;s worth commenting on the subtlety here, since intervening operations could have caused a GC. Since we&apos;re keeping the key alive though, it&apos;s guaranteed that CSE should return the actual state of the map, since if the key is alive, and we prove it&apos;s there via CSE, that must be the state of the map. I guess there are times we should have code like this:
&gt; 
&gt; function foo(s, k) {
&gt;     let a = s.has(k);
&gt;     new Array; // causes a GC, and clears k
&gt;     let b = s.has(k); // this turns into nothing, and we don&apos;t conservatively keep k alive
&gt; }
&gt; 
&gt; both b and a may be true, even though the GC may have cleared k from the map. But, I think this is fine semantically in JS. The only thing that would not be semantically OK would be to observe some sort of time travel in result operations, but I don&apos;t think that&apos;s possible, because it wouldn&apos;t be possible via liveness of the key to do such a thing.

Yeah. As long as the latter `s.has(k)` returns the same value to the former `s.has(k)`, it does not break semantics.
If `a` = true and `b` = false, it is semantically incorrect since `k` should be live when querying in `s.has(k)`. But it never happens with this CSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394013</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-29 01:25:41 -0800</bug_when>
    <thetext>Committed r227723: &lt;https://trac.webkit.org/changeset/227723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1394016</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-29 01:26:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/36978679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329759</attachid>
            <date>2017-12-19 06:48:45 -0800</date>
            <delta_ts>2018-01-28 23:54:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180015-20171219234844.patch</filename>
            <type>text/plain</type>
            <size>30085</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDIwMTFlMThhMDQ1NWYxZDExYzllODFlN2YwMmJhOTk5ODBlNGUwLi44OWIxNjZiNjZhMGMxZjg1
MTc0YjE5ZWNkZmFiZmIzMGM4NmYxNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNy0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXVtGVExdIFdlYWtNYXAjc2V0IHNob3VsZCBoYXZlIERGRyBu
b2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAw
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgV2Vha01hcFNldCBhbmQgV2Vha1NldEFkZCBERkcgbm9kZXMgdG8gaGFuZGxl
IHRoZW0gZWZmaWNpZW50bHkgaW4gREZHIGFuZCBGVEwuCisgICAgICAgIFdlIGFsc28gZGVmaW5l
IENTRSBydWxlcyBmb3IgdGhlbS4gTm93LCBXZWFrTWFwU2V0IGFuZCBXZWFrU2V0QWRkIGNhbiBv
ZmZlciB0aGUgcmVzdWx0cyBvZgorICAgICAgICB0aGUgc3Vic2VxdWVudCBXZWFrTWFwR2V0IGlm
IENTRSBhbGxvd3MuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmFkZFZhckFyZ0NoaWxk
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpj
bG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpkb2VzR0MpOgorICAgICAgICBXZWFrTWFwIG9wZXJhdGlvbnMgZG8gbm90IGNhdXNlIEdD
LgorCisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVXZWFrU2V0QWRkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVdlYWtNYXBTZXQpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVdlYWtTZXRBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlV2Vha01hcFNldCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0ludHJpbnNpYy5jcHA6CisgICAgICAgIChKU0M6OmludHJpbnNpY05hbWUp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAgICAgICogcnVudGltZS9XZWFr
TWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcFByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OldlYWtTZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKwogMjAxNy0xMi0x
NyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRlRM
XSBOZXdBcnJheUJ1ZmZlciBzaG91bGQgYmUgc2lua2VkIGlmIGl0IGlzIG9ubHkgdXNlZCBmb3Ig
c3ByZWFkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNjQwMTU1MzQ5Zjg1OWVmNjY2ZTE5NWYy
MGYwODljZTI0MWQ3NTZkZi4uYWFhMDQxM2UzZWFjNWE4ZjZjNWY5Njk4ZDExMGU5OGVjMTkwY2Q3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTE1Nyw2ICsxMTU3LDEwIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgY2FzZSBNYXBTZXQ6CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBXZWFrU2V0QWRkOgorICAgIGNhc2UgV2Vha01hcFNldDoKKyAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIFdlYWtNYXBHZXQ6CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9w
KCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCA3OWU2NjU4ODAyZjAwMGFhMDA2OWZiM2M0ODk4ZWZjZTAw
YjBmYTllLi44OWNjYzQxYTVmMDNlZDQ1NzRmMjEwYjdmZmJmZDYxZjE1Y2MwNTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNzU2
LDYgKzc1NiwxMiBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShjaGlsZCkpOwogICAgICAgICBtX251bVBhc3NlZFZh
ckFyZ3MrKzsKICAgICB9CisKKyAgICB2b2lkIGFkZFZhckFyZ0NoaWxkKEVkZ2UgY2hpbGQpCisg
ICAgeworICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKKyAg
ICAgICAgbV9udW1QYXNzZWRWYXJBcmdzKys7CisgICAgfQogICAgIAogICAgIE5vZGUqIGFkZENh
bGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKICAgICAgICAgTm9kZVR5cGUgb3AsIE9wSW5mbyBvcElu
Zm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsCkBAIC0y
OTc1LDYgKzI5ODEsNDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2Fs
bChOb2RlKiBjYWxsZWUsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW4KICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCisgICAgY2FzZSBKU1dlYWtTZXRBZGRJbnRyaW5zaWM6IHsKKyAgICAg
ICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICE9IDIpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZFR5cGUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGluc2VydENoZWNrcygpOworICAgICAgICBOb2RlKiBiYXNlID0g
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KSk7CisgICAg
ICAgIE5vZGUqIGtleSA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rl
ck9mZnNldCkpOworICAgICAgICBhZGRUb0dyYXBoKENoZWNrLCBFZGdlKGtleSwgT2JqZWN0VXNl
KSk7CisgICAgICAgIE5vZGUqIGhhc2ggPSBhZGRUb0dyYXBoKE1hcEhhc2gsIGtleSk7CisgICAg
ICAgIGFkZFRvR3JhcGgoV2Vha1NldEFkZCwgRWRnZShiYXNlLCBXZWFrU2V0T2JqZWN0VXNlKSwg
RWRnZShrZXksIE9iamVjdFVzZSksIEVkZ2UoaGFzaCwgSW50MzJVc2UpKTsKKyAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYmFzZSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGNhc2UgSlNXZWFrTWFwU2V0SW50cmluc2ljOiB7CisgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAzKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRUeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpbnNlcnRDaGVja3MoKTsKKyAgICAgICAgTm9kZSogYmFzZSA9IGdl
dCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCkpOworICAgICAg
ICBOb2RlKiBrZXkgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJP
ZmZzZXQpKTsKKyAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoMiwgcmVnaXN0ZXJPZmZzZXQpKTsKKworICAgICAgICBhZGRUb0dyYXBoKENoZWNrLCBF
ZGdlKGtleSwgT2JqZWN0VXNlKSk7CisgICAgICAgIE5vZGUqIGhhc2ggPSBhZGRUb0dyYXBoKE1h
cEhhc2gsIGtleSk7CisKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoRWRnZShiYXNlLCBXZWFrTWFw
T2JqZWN0VXNlKSk7CisgICAgICAgIGFkZFZhckFyZ0NoaWxkKEVkZ2Uoa2V5LCBPYmplY3RVc2Up
KTsKKyAgICAgICAgYWRkVmFyQXJnQ2hpbGQoRWRnZSh2YWx1ZSkpOworICAgICAgICBhZGRWYXJB
cmdDaGlsZChFZGdlKGhhc2gsIEludDMyVXNlKSk7CisgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6
VmFyQXJnLCBXZWFrTWFwU2V0LCBPcEluZm8oMCksIE9wSW5mbygwKSk7CisgICAgICAgIHNldChW
aXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGJhc2UpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKICAgICBjYXNlIEhhc093blByb3BlcnR5SW50cmluc2ljOiB7CiAgICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyAhPSAyKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAx
MzBkMGEwNmRiYzVlNjc5YjM4ZTU1OTViMGQ4ZDAwNGNjNmI5Nzc0Li42Y2I1YmE3MzM2NWJkNTgx
YzY3ODlmZjE5NmE2MjY3ZTVlZmM3Yjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaApAQCAtMTY2Myw2ICsxNjYzLDIzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBjYXNlIFdlYWtTZXRBZGQ6IHsKKyAg
ICAgICAgRWRnZSYgbWFwRWRnZSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlJiBrZXlF
ZGdlID0gbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIHdyaXRlKEpTV2Vha1NldEZpZWxkcyk7Cisg
ICAgICAgIGRlZihIZWFwTG9jYXRpb24oV2Vha01hcEdldExvYywgSlNXZWFrU2V0RmllbGRzLCBt
YXBFZGdlLCBrZXlFZGdlKSwgTGF6eU5vZGUoa2V5RWRnZS5ub2RlKCkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhc2UgV2Vha01hcFNldDogeworICAgICAgICBFZGdlJiBtYXBF
ZGdlID0gZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgICAgIEVkZ2UmIGtleUVkZ2Ug
PSBncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgRWRnZSYgdmFsdWVFZGdlID0g
Z3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMik7CisgICAgICAgIHdyaXRlKEpTV2Vha01hcEZpZWxk
cyk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oV2Vha01hcEdldExvYywgSlNXZWFrTWFwRmll
bGRzLCBtYXBFZGdlLCBrZXlFZGdlKSwgTGF6eU5vZGUodmFsdWVFZGdlLm5vZGUoKSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdl
dDoKICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCBjYjBiYmM0ZGMyZGYzOTdhOTRh
OTllYjIwMDZmOWMwOTNhN2M0NGU1Li43ZGNkZDEwM2VlNzQ5MjI1M2E3MWNiZjg4MzZhZGI1ZGIz
NWNkYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMTAs
NiArMjEwLDggQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgTG9hZFZhbHVlRnJvbU1hcEJ1Y2tldDoKICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFr
TWFwR2V0OgogICAgIGNhc2UgV2Vha01hcEdldDoKKyAgICBjYXNlIFdlYWtTZXRBZGQ6CisgICAg
Y2FzZSBXZWFrTWFwU2V0OgogICAgIGNhc2UgVW5yZWFjaGFibGU6CiAgICAgY2FzZSBFeHRyYWN0
Q2F0Y2hMb2NhbDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggNWEzNDY2Zjc5YzRjMzk1N2Yy
YjVlZWI5MmU4MGRlYTY5YTJmN2YzNC4uYmQ0MmM4OTdmNjFkZjJiOTc5MzViN2QzYmI0YzBjMWQ0
OWEzODYwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xOTY5LDYgKzE5NjksMjAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgV2Vha1NldEFk
ZDogeworICAgICAgICAgICAgZml4RWRnZTxXZWFrU2V0T2JqZWN0VXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFdlYWtNYXBTZXQ6IHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8V2Vha01hcE9iamVjdFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAw
KSk7CisgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKSk7CisgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBEZWZpbmVEYXRhUHJvcGVydHk6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSk7CiAgICAgICAgICAgICBFZGdlJiBwcm9wZXJ0
eUVkZ2UgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDY0NjA2ZDU1NGJjNzVjNzEyZmM3OGE2MmEwZGE5YWU2
MWIzMDBjOTMuLjljYTY3ZTMzYjE2OTllZTg1OWZiMDg0NDI3N2ZiOGMyZDM2OTYwN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTQ0NSw2ICs0NDUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTWFwU2V0LCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICAvKiBOb2RlcyBmb3IgSlNXZWFrTWFw
IGFuZCBKU1dlYWtTZXQgKi8gXAogICAgIG1hY3JvKFdlYWtNYXBHZXQsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKFdlYWtTZXRBZGQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhX
ZWFrTWFwU2V0LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNy
byhFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAg
IG1hY3JvKFN0cmluZ1NsaWNlLCBOb2RlUmVzdWx0SlMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY3MWY5NGQ3N2ZhYTZhYzQ0MmFjOWY1MjAx
YTBlZjA0Zjg3YWU0YzkuLmIxODk2ZjAwMmFlMTA4OTgyNGQ1Y2MzYjU5ZDE5YmZhZGQ5MDk0MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNTYs
NiArNTYsOCBAQAogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi
SlNNYXAuaCIKICNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIkpTV2Vha01hcC5oIgorI2lu
Y2x1ZGUgIkpTV2Vha1NldC5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIlBhcnNlSW50LmgiCkBAIC0yNTg3LDYgKzI1
ODksMjAgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hcFNldChFeGVjU3RhdGUqIGV4
ZWMsIEpTQ2VsbCogbWFwLCBFbmNvZGVkSlNWYWx1ZQogICAgIGpzQ2FzdDxKU01hcCo+KG1hcCkt
PmFkZE5vcm1hbGl6ZWQoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGtleSksIEpTVmFsdWU6OmRlY29k
ZSh2YWx1ZSksIGhhc2gpOwogfQogCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uV2Vha1Nl
dEFkZChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogc2V0LCBKU0NlbGwqIGtleSwgaW50MzJfdCBo
YXNoKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGpzQ2FzdDxKU1dlYWtTZXQqPihzZXQpLT5hZGQo
dm0sIGFzT2JqZWN0KGtleSksIEpTVmFsdWUoKSwgaGFzaCk7Cit9CisKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25XZWFrTWFwU2V0KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBtYXAsIEpT
Q2VsbCoga2V5LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSwgaW50MzJfdCBoYXNoKQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0s
IGV4ZWMpOworICAgIGpzQ2FzdDxKU1dlYWtNYXAqPihtYXApLT5hZGQodm0sIGFzT2JqZWN0KGtl
eSksIEpTVmFsdWU6OmRlY29kZSh2YWx1ZSksIGhhc2gpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNWJlYzliN2FiYWU1
NzliZjJiMjI2Y2RiNDY2Njg0ODY5ZjhkY2QxNC4uYzg0MTRkZGJjMmRmZmJhYTE3NTJiNGZkODNl
NDQ2ZDA2NThiNjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmgKQEAgLTE0MCw2ICsxNDAsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50KEV4ZWNTdGF0ZSosIEpTT2JqZQogdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2woRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBTeW1ib2wqLCBKU09iamVjdCosIEpTT2JqZWN0KiwgaW50MzJfdCkgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEFkZChFeGVjU3RhdGUq
LCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk1hcFNldChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25XZWFrU2V0QWRkKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2Vs
bCosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25X
ZWFrTWFwU2V0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpT
QXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFycmF5UHVzaE11bHRpcGxlKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCB2b2lkKiBidWZmZXIs
IGludDMyX3QgZWxlbWVudENvdW50KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3RhdGUqLCBkb3VibGUgdmFs
dWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGRk
OGQ4ZTAyNjNkYmE1ZGZhYTQ0YzFjNzgzN2ZmZGE4NTQwZTJkNGYuLmE3NTkzZGU3NzRjOTZhNmI2
Y2UyYWRmNjM1NjcyODk1ZjFjOTJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xMTgz
LDYgKzExODMsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAg
ICAgIGNhc2UgU2V0QWRkOgogICAgICAgICBjYXNlIE1hcFNldDoKKyAgICAgICAgY2FzZSBXZWFr
U2V0QWRkOgorICAgICAgICBjYXNlIFdlYWtNYXBTZXQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkg
cHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBjNjMyYzk2OTgyMWJlZjhhYzQwYmExNTUxM2VkM2Vl
YmQ0ZjNiNDY0Li4wNmM2ZWYyYTk2YTVlZmZmMjI5MzRlNzFmYmNkYTQ5MTQ2NWNjZDRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtNDI2LDYg
KzQyNiw4IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIExvYWRWYWx1ZUZyb21NYXBCdWNrZXQ6
CiAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDoKICAgICBjYXNlIFdlYWtNYXBH
ZXQ6CisgICAgY2FzZSBXZWFrU2V0QWRkOgorICAgIGNhc2UgV2Vha01hcFNldDoKICAgICBjYXNl
IEF0b21pY3NBZGQ6CiAgICAgY2FzZSBBdG9taWNzQW5kOgogICAgIGNhc2UgQXRvbWljc0NvbXBh
cmVFeGNoYW5nZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggYjcwOTkxYTM4MDZhZWE4ZmJiMWRiYmZjMzI1NTk5OTYxZGFhNjc1NS4u
MDIxZTQ3N2MzYzBjYmY0MWFhMjE4MzcxMTU1YWMwMjc2NjllMzBiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTExMDc5LDYgKzEx
MDc5LDQ2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVXZWFrTWFwR2V0KE5vZGUqIG5v
ZGUpCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KIAordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVdlYWtTZXRBZGQoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBzZXQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgU3BlY3VsYXRlSW50MzJP
cGVyYW5kIGhhc2godGhpcywgbm9kZS0+Y2hpbGQzKCkpOworCisgICAgR1BSUmVnIHNldEdQUiA9
IHNldC5ncHIoKTsKKyAgICBHUFJSZWcga2V5R1BSID0ga2V5LmdwcigpOworICAgIEdQUlJlZyBo
YXNoR1BSID0gaGFzaC5ncHIoKTsKKworICAgIHNwZWN1bGF0ZVdlYWtTZXRPYmplY3Qobm9kZS0+
Y2hpbGQxKCksIHNldEdQUik7CisgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBr
ZXlHUFIpOworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbldlYWtTZXRBZGQsIHNldEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlV2Vha01hcFNldChOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIG1hcCh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBrZXkodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGls
ZChub2RlLCAxKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGhhc2go
dGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisKKyAgICBHUFJSZWcg
bWFwR1BSID0gbWFwLmdwcigpOworICAgIEdQUlJlZyBrZXlHUFIgPSBrZXkuZ3ByKCk7CisgICAg
SlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICBHUFJSZWcg
aGFzaEdQUiA9IGhhc2guZ3ByKCk7CisKKyAgICBzcGVjdWxhdGVXZWFrTWFwT2JqZWN0KG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCksIG1hcEdQUik7CisgICAgc3BlY3VsYXRlT2Jq
ZWN0KG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSksIGtleUdQUik7CisKKyAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uV2Vha01hcFNldCwg
bWFwR1BSLCBrZXlHUFIsIHZhbHVlUmVncywgaGFzaEdQUik7CisgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCA5NzRmYzQxYzg4M2UwZTg3NTFiMTUzYzE3Yzk1YjU5NzlhZTVi
OGI2Li5mY2M0NWYyNTZlYWRkMGMxZjI4ODlhZWY4ZGMxMzMyYzBiNmFmNGJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjYyLDYgKzEy
NjIsMTEgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgYXJnMSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VDQ1ogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0K
IAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJh
Y2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9FQ2Igb3BlcmF0aW9uLCB2b2lkKiBwb2ludGVy
KQogICAgIHsKQEAgLTE5NTMsNiArMTk1OCwxMSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
LnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUNDSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMucGF5bG9hZEdQUigpLCBhcmc0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7CkBAIC0yNTIzLDYgKzI1MzMsMTEgQEAgY2xh
c3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMy5wYXlsb2FkR1BSKCks
IGFyZzMudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VDQ0paIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBh
cmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczLnBheWxvYWRH
UFIoKSwgYXJnMy50YWdHUFIoKSwgYXJnNCk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihW
X0pJVE9wZXJhdGlvbl9FUFpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBK
U1ZhbHVlUmVncyBhcmczKQogICAgIHsKQEAgLTI4OTYsNiArMjkxMSw4IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVTZXRBZGQoTm9kZSopOwogICAgIHZvaWQgY29t
cGlsZU1hcFNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlV2Vha01hcEdldChOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlV2Vha1NldEFkZChOb2RlKik7CisgICAgdm9pZCBjb21waWxlV2Vha01h
cFNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTG9hZEtleUZyb21NYXBCdWNrZXQoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUxvYWRWYWx1ZUZyb21NYXBCdWNrZXQoTm9kZSopOwogICAgIHZv
aWQgY29tcGlsZUV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0KE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IDkxMzcxN2JmMDVlZTcyY2RkZDU4ZGYwODc3M2JjYjIzY2ExMTIwZWMuLjgzZmM1OTI2MzBiYzMy
YTdlMWQ1NDIwODY4NzY3OTZhYzA0YjRhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNDg4Niw2ICs0ODg2LDE0
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29t
cGlsZVdlYWtNYXBHZXQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBXZWFrU2V0
QWRkOgorICAgICAgICBjb21waWxlV2Vha1NldEFkZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFdlYWtNYXBTZXQ6CisgICAgICAgIGNvbXBpbGVXZWFrTWFwU2V0KG5vZGUpOwor
ICAgICAgICBicmVhazsKKwogICAgIGNhc2UgRmx1c2g6CiAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRl
eCAzN2YyYWFmODM1NjM2OTM3MTQ5MTMyZGQzZGU0ZjZiZDZmZmU3YjU2Li42NmVlMDdhMGFjM2Vk
ZTI5MTEwNzNhYmU3MDRhMjVlODk4YmRjNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTUyNjgsNiArNTI2OCwxNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVX
ZWFrTWFwR2V0KG5vZGUpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgV2Vha1NldEFkZDoK
KyAgICAgICAgY29tcGlsZVdlYWtTZXRBZGQobm9kZSk7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjb21waWxlV2Vha01hcFNldChub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisKICAgICBjYXNlIFN0cmluZ1NsaWNlOiB7CiAgICAgICAgIGNvbXBpbGVTdHJp
bmdTbGljZShub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDg3OGY2ZThiYTFmZmM3YzM1N2NmYWEyZTFm
YzY1YTAyNDA3YzkwOS4uZjZkZGI3N2I1YTM1YjI1MWY0ZjIyM2YzN2Q1ZWUwMzIwMjc0NjM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
MjExLDYgKzIxMSw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgU2V0QWRkOgogICAgIGNhc2UgTWFwU2V0OgogICAgIGNhc2UgV2Vha01h
cEdldDoKKyAgICBjYXNlIFdlYWtTZXRBZGQ6CisgICAgY2FzZSBXZWFrTWFwU2V0OgogICAgIGNh
c2UgSXNFbXB0eToKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2UgSXNCb29sZWFuOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDNl
MzFhMjI5MDc2N2Y2NjkxZWQ3Yjk1Y2IzOWM0NDVmOTQ3NzQxNzIuLmFiNzQxMmNkMTdmMzA4NDg5
MzI5Y2YzNTJhMGUzNTUxNTY5YzNlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwODUsNiArMTA4NSwxMiBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICBjYXNlIFdlYWtNYXBHZXQ6CiAgICAgICAgICAgICBjb21waWxlV2Vh
a01hcEdldCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2Vha1NldEFkZDoK
KyAgICAgICAgICAgIGNvbXBpbGVXZWFrU2V0QWRkKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICAgICAgY29tcGlsZVdlYWtNYXBTZXQoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAgICAgICAg
Y29tcGlsZUlzT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTkwNjMsNiArOTA2OSwy
NSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQogCisgICAgdm9pZCBjb21waWxlV2Vha1NldEFkZCgpCisgICAgeworICAgICAgICBMVmFs
dWUgc2V0ID0gbG93V2Vha1NldE9iamVjdChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZh
bHVlIGtleSA9IGxvd09iamVjdChtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGhh
c2ggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwoVm9pZCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbldlYWtTZXRBZGQpLCBtX2NhbGxGcmFtZSwgc2V0LCBr
ZXksIGhhc2gpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVdlYWtNYXBTZXQoKQorICAgIHsK
KyAgICAgICAgTFZhbHVlIG1hcCA9IGxvd1dlYWtNYXBPYmplY3QobV9ncmFwaC52YXJBcmdDaGls
ZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIGtleSA9IGxvd09iamVjdChtX2dyYXBoLnZh
ckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVl
KG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CisgICAgICAgIExWYWx1ZSBoYXNoID0g
bG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKKworICAgICAgICB2bUNh
bGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbldlYWtNYXBTZXQpLCBtX2NhbGxGcmFt
ZSwgbWFwLCBrZXksIHZhbHVlLCBoYXNoKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVJc09i
amVjdE9yTnVsbCgpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA3NDc5MTQ2NzM5NTc5
MWZiMjgyODdlN2Y3OGYzOTYyYzY5ODFjNDk1Li5hNzE3MzFhMjBjMDUwNDhkMTRmMWY2YWM0NjU1
NTlmMmY4MjU3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMjc0LDYgKzI3NCw4IEBAIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRP
cGVyYXRpb25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKIHR5cGVkZWYgdm9p
ZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwq
LCBKU0NlbGwqKTsKIHR5cGVkZWYgdm9pZCAoSklUX09QRVJBVElPTiAqVl9KSVRPcGVyYXRpb25f
RUNsaUpzZikoRXhlY1N0YXRlKiwgQ2FsbExpbmtJbmZvKiwgSlNGdW5jdGlvbiopOwogdHlwZWRl
ZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FQ0NKKShFeGVjU3RhdGUqLCBK
U0NlbGwqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEpJVF9PUEVS
QVRJT04gKlZfSklUT3BlcmF0aW9uX0VDQ1opKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCos
IGludDMyX3QpOwordHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9F
Q0NKWikoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUsIGludDMy
X3QpOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FWlN5bXRh
YkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwog
dHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIChKSVRfT1BFUkFUSU9OICpWX0pJVE9w
ZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludHJpbnNpYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRyaW5zaWMu
Y3BwCmluZGV4IGNhMTU1OTEwNmFhZThjNDAxMmM5ZDczYjA1M2ZjMzY3ZTY3NWNlNGEuLjk1M2Vl
MTViN2MyYjcwY2QyNTExZmFlMjcwZDJmOGQxZGRiYTIxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmNwcApAQCAtMTY3LDggKzE2NywxMiBAQCBjb25zdCBj
aGFyKiBpbnRyaW5zaWNOYW1lKEludHJpbnNpYyBpbnRyaW5zaWMpCiAgICAgICAgIHJldHVybiAi
SlNXZWFrTWFwR2V0SW50cmluc2ljIjsKICAgICBjYXNlIEpTV2Vha01hcEhhc0ludHJpbnNpYzoK
ICAgICAgICAgcmV0dXJuICJKU1dlYWtNYXBIYXNJbnRyaW5zaWMiOworICAgIGNhc2UgSlNXZWFr
TWFwU2V0SW50cmluc2ljOgorICAgICAgICByZXR1cm4gIkpTV2Vha01hcFNldEludHJpbnNpYyI7
CiAgICAgY2FzZSBKU1dlYWtTZXRIYXNJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiSlNXZWFr
U2V0SGFzSW50cmluc2ljIjsKKyAgICBjYXNlIEpTV2Vha1NldEFkZEludHJpbnNpYzoKKyAgICAg
ICAgcmV0dXJuICJKU1dlYWtTZXRBZGRJbnRyaW5zaWMiOwogICAgIGNhc2UgSGFzT3duUHJvcGVy
dHlJbnRyaW5zaWM6CiAgICAgICAgIHJldHVybiAiSGFzT3duUHJvcGVydHlJbnRyaW5zaWMiOwog
ICAgIGNhc2UgQXRvbWljc0FkZEludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50cmluc2ljLmgKaW5kZXggMzkwZGVmODQ5ZWU4ZTgzOWU4M2UwYWRmYTA2OGJkOGVhZWI0
ZTQxZi4uODU1NDRjMjI3ZmEzYWI0ZDNjZTdlMTg5Y2Q4ODVjODAzOTFmNjE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKQEAgLTk2LDcgKzk2LDkgQEAgZW51
bSBJbnRyaW5zaWMgewogICAgIEpTU2V0QnVja2V0S2V5SW50cmluc2ljLAogICAgIEpTV2Vha01h
cEdldEludHJpbnNpYywKICAgICBKU1dlYWtNYXBIYXNJbnRyaW5zaWMsCisgICAgSlNXZWFrTWFw
U2V0SW50cmluc2ljLAogICAgIEpTV2Vha1NldEhhc0ludHJpbnNpYywKKyAgICBKU1dlYWtTZXRB
ZGRJbnRyaW5zaWMsCiAgICAgSGFzT3duUHJvcGVydHlJbnRyaW5zaWMsCiAgICAgQXRvbWljc0Fk
ZEludHJpbnNpYywKICAgICBBdG9taWNzQW5kSW50cmluc2ljLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAppbmRleCA5Y2FlYjU5MTIy
NDA0ZjdhOTA0NDIzMjNmMmFlYzJmYzBkZjdjNGNiLi5mNjA3NjM2ZGFmZmUzNDY3OTg3MjdlNjk1
Y2Q1M2YzYjVkNTE5NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrTWFwUHJvdG90eXBlLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFdlYWtNYXBQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5kZWxldGVLZXl3b3JkLCBwcm90b0Z1bmNXZWFrTWFwRGVsZXRlLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05B
VElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFt
ZXMtPmdldCwgcHJvdG9GdW5jV2Vha01hcEdldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTV2Vha01hcEdldEludHJpbnNpYyk7CiAgICAg
SlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmhhcywgcHJvdG9GdW5jV2Vha01hcEhhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEsIEpTV2Vha01hcEhhc0ludHJpbnNpYyk7
Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlO
YW1lcy0+c2V0LCBwcm90b0Z1bmNXZWFrTWFwU2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNf
RlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNldCwgcHJvdG9G
dW5jV2Vha01hcFNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSksIDIsIEpTV2Vha01hcFNldEludHJpbnNpYyk7CiAKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpz
U3RyaW5nKCZ2bSwgIldlYWtNYXAiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKaW5kZXggNTYzZTg2YzlhZmIyZDQ5NTli
NWNjMDE0ZGMzY2I3MmRlNDVmMzgyMC4uNjQ4NmQyMTM4ZTJmNTdhMjBlMTg3YjQ2MGUyOTI0MzQ5
NjIwNDk3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1Nl
dFByb3RvdHlwZS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBXZWFrU2V0UHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5kZWxldGVLZXl3b3JkLCBwcm90b0Z1bmNXZWFrU2V0RGVsZXRlLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9J
TlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhh
cywgcHJvdG9GdW5jV2Vha1NldEhhcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSksIDEsIEpTV2Vha1NldEhhc0ludHJpbnNpYyk7Ci0gICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkLCBw
cm90b0Z1bmNXZWFrU2V0QWRkLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMSk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lU
SE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmFkZCwgcHJvdG9GdW5jV2Vha1NldEFk
ZCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDEs
IEpTV2Vha1NldEFkZEludHJpbnNpYyk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwg
IldlYWtTZXQiKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNWRhNmMyOWY5ZDU5M2MyZDc1YTNmMTNhYmM2MzE4NzMyNTZhYjE4
YS4uOTc1MDI1ZTdlNTcxMGZmNjIwOTJiYzA3MTk1MWFkMjgzNWFiNTBiMiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxNy0xMi0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbREZHXVtGVExdIFdlYWtNYXAjc2V0IHNob3VsZCBoYXZlIERGRyBub2RlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwMTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy93ZWFr
bWFwLXNldC1jaGFuZ2UtZ2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy93ZWFrbWFwLXNldC1jc2UuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL3dl
YWtzZXQtYWRkLWNoYW5nZS1nZXQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAqIHN0cmVzcy93ZWFrc2V0LWFkZC1jc2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorCiAyMDE3LTEyLTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtGVExdIE5ld0FycmF5QnVmZmVyIHNob3VsZCBiZSBzaW5rZWQgaWYgaXQg
aXMgb25seSB1c2VkIGZvciBzcHJlYWRpbmcKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3dl
YWttYXAtc2V0LWNoYW5nZS1nZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy93ZWFrbWFwLXNldC1jaGFu
Z2UtZ2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI1MTFlNTgwYTBhY2UwZmY3ZWQ0ZDFiYTc0MjNiYjE4YTg0
NzNhODkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy93ZWFrbWFwLXNldC1jaGFu
Z2UtZ2V0LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIga2V5MSA9IHt9OworICAgIHZhciBtYXAgPSBuZXcgV2Vha01hcCgpOworICAgIHZh
ciByZXMxID0gbWFwLmdldChrZXkxKTsKKyAgICBtYXAuc2V0KGtleTEsIDIwKTsKKyAgICB2YXIg
cmVzMiA9IG1hcC5nZXQoa2V5MSk7CisgICAgbWFwLnNldChrZXkxLCA0MDApOworICAgIHZhciBy
ZXMzID0gbWFwLmdldChrZXkxKTsKKyAgICBtYXAuZGVsZXRlKGtleTEpOworICAgIHZhciByZXM0
ID0gbWFwLmdldChrZXkxKTsKKyAgICByZXR1cm4gW3JlczEsIHJlczIsIHJlczMsIHJlczRdOwor
fQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAg
ICB2YXIgW3JlczEsIHJlczIsIHJlczMsIHJlczRdID0gdGVzdCgpOworICAgIHNob3VsZEJlKHJl
czEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUocmVzMiwgMjApOworICAgIHNob3VsZEJlKHJl
czMsIDQwMCk7CisgICAgc2hvdWxkQmUocmVzNCwgdW5kZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3dlYWttYXAtc2V0LWNzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3dlYWtt
YXAtc2V0LWNzZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNWYwNDkzNmFkYzcxN2Y1ZDg1ZDQyNGE4MjEzNmMy
NWQ1YzEyZjIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvd2Vha21hcC1zZXQt
Y3NlLmpzCkBAIC0wLDAgKzEsMjIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpCit7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgdmFyIGtleTEgPSB7fTsKKyAgICB2YXIgbWFwID0gbmV3IFdlYWtNYXAoKTsKKyAgICB2YXIg
cjEgPSBtYXAuZ2V0KGtleTEpOworICAgIG1hcC5zZXQoa2V5MSwgNDIpOworICAgIHZhciByMiA9
IG1hcC5nZXQoa2V5MSk7CisgICAgcmV0dXJuIFtyMSwgcjJdOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgW3IxLCByMl0gPSB0
ZXN0KCk7CisgICAgc2hvdWxkQmUocjEsIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUocjIsIDQy
KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3dlYWtzZXQtYWRkLWNoYW5nZS1nZXQu
anMgYi9KU1Rlc3RzL3N0cmVzcy93ZWFrc2V0LWFkZC1jaGFuZ2UtZ2V0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc4ZmFiZWY4YTU5OTVmOTA2ZGU3MjQ1MmVmN2ZkYmJkZmExNGFjYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy93ZWFrc2V0LWFkZC1jaGFuZ2UtZ2V0LmpzCkBAIC0wLDAgKzEs
MjQgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIga2V5MSA9IHt9Owor
ICAgIHZhciBzZXQgPSBuZXcgV2Vha1NldCgpOworICAgIHZhciByZXMxID0gc2V0LmhhcyhrZXkx
KTsKKyAgICBzZXQuYWRkKGtleTEpOworICAgIHZhciByZXMyID0gc2V0LmhhcyhrZXkxKTsKKyAg
ICBzZXQuZGVsZXRlKGtleTEpOworICAgIHZhciByZXMzID0gc2V0LmhhcyhrZXkxKTsKKyAgICBy
ZXR1cm4gW3JlczEsIHJlczIsIHJlczNdOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICB2YXIgW3JlczEsIHJlczIsIHJlczNdID0gdGVz
dCgpOworICAgIHNob3VsZEJlKHJlczEsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyZXMyLCB0cnVl
KTsKKyAgICBzaG91bGRCZShyZXMzLCBmYWxzZSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy93ZWFrc2V0LWFkZC1jc2UuanMgYi9KU1Rlc3RzL3N0cmVzcy93ZWFrc2V0LWFkZC1jc2Uu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDBjNGNlYTY2OGY5NmZjNzc3MzIzN2MwNjZjZTI4NzY1OTZhYmJkZQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3dlYWtzZXQtYWRkLWNzZS5qcwpAQCAt
MCwwICsxLDIyIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBrZXkx
ID0ge307CisgICAgdmFyIHNldCA9IG5ldyBXZWFrU2V0KCk7CisgICAgdmFyIHIxID0gc2V0Lmhh
cyhrZXkxKTsKKyAgICBzZXQuYWRkKGtleTEpOworICAgIHZhciByMiA9IHNldC5oYXMoa2V5MSk7
CisgICAgcmV0dXJuIFtyMSwgcjJdOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBsZXQgW3IxLCByMl0gPSB0ZXN0KCk7CisgICAgc2hv
dWxkQmUocjEsIGZhbHNlKTsKKyAgICBzaG91bGRCZShyMiwgdHJ1ZSk7Cit9Cg==
</data>
<flag name="review"
          id="348806"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>