<?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>79617</bug_id>
          
          <creation_ts>2012-02-26 19:04:40 -0800</creation_ts>
          <short_desc>Implement support for op_negate and op_bitnot in the DFG JIT.</short_desc>
          <delta_ts>2012-02-27 16:32:01 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565264</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-26 19:04:40 -0800</bug_when>
    <thetext>To keep the IR simple, we can implement these as sub &amp; xor operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565341</commentid>
    <comment_count>1</comment_count>
      <attachid>128955</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-26 22:39:28 -0800</bug_when>
    <thetext>Created attachment 128955
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565373</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-26 23:25:05 -0800</bug_when>
    <thetext>Gah, just finished testing, there is a bug here.  To implement negate as a subtract, it is -0.0 - X, rather than 0 - X, d&apos;oh, should have remembered that.

Optimizing this would probably going to mean adding special cases for subtract-from-negative-zero throughout the code, so it&apos;s probably easier to just keep op_negate, and add support to the DFG JIT.

In the case of op_bitnot, removing this was a nice simplification so I&apos;ll probably stick with that approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565777</commentid>
    <comment_count>3</comment_count>
      <attachid>129064</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-27 10:18:27 -0800</bug_when>
    <thetext>Created attachment 129064
Remove op_bitnot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565782</commentid>
    <comment_count>4</comment_count>
      <attachid>129064</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-02-27 10:22:40 -0800</bug_when>
    <thetext>Comment on attachment 129064
Remove op_bitnot

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Remove op_bitnop â this is redundant, ~x === x^-1.

Weird unicode character.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +

Please put a comment about removing the canUse part of ResultType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565789</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-27 10:26:49 -0800</bug_when>
    <thetext>op_bitnot change landed in r109007.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566025</commentid>
    <comment_count>6</comment_count>
      <attachid>129110</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-27 15:22:43 -0800</bug_when>
    <thetext>Created attachment 129110
ArithNegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566094</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-27 16:32:01 -0800</bug_when>
    <thetext>Fixed in r109038.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128955</attachid>
            <date>2012-02-26 22:39:28 -0800</date>
            <delta_ts>2012-02-27 10:18:27 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>79617.2.patch</filename>
            <type>text/plain</type>
            <size>34619</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4OTU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDEyLTAyLTI2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3BfbmVnYXRlIGFuZCBvcF9iaXRub3Qg
aW4gdGhlIERGRyBKSVQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFjdHVhbGx5LCB0aGVyZSBpcyBhbiBldmVyIGdyZWF0ZXIgd2luIGhlcmUgYnkgcmVt
b3ZpbmcgdGhlc2Ugb3Bjb2RlcyBmcm9tIEpTQyBhbHRvZ2V0aGVyLgorICAgICAgICBJZiB3ZSB0
YWtlIGEgbW9yZSBSSVNDIGFwcHJvYWNoLCB3ZSBjYW4ganVzdCBoYW5kbGUgb3BfbmVnYXRlIHVz
aW5nIG9wX3N1YiAoLXggPT09IDAteCksCisgICAgICAgIGFuZCBvcF9iaXRub3QgYXMgb3BfeG9y
ICh+eCA9PT0geF4tMSkuIEluIHRoZSBzaG9ydCB0ZXJtLCB0aGlzIGFsbG93cyBuZWcgYW5kIG5v
dCB0byB0YWtlCisgICAgICAgIGFkdmFudGFnZSBvZiB0aGUgbW9yZSBvcHRpbWFsIGNvZGUgZ2Vu
ZXJhdGlvbiBhdmFpbGFibGUgZm9yIHN1YiBhbmQgeG9yLCBhbmQgaW4gdGhlIGxvbmdlcgorICAg
ICAgICB0ZXJtIGFueSBmdXJ0aGVyIG9wdGltaXphdGlvbnMgZm9yIHN1YiBvciB4b3Igd2lsbCBp
bW1lZGlhdGVseSBiZSBhcHBsaWNhYmxlIHRvIGNvZGUgdGhhdAorICAgICAgICBjaG9zZSB0byB1
c2UgbmVnIG9yIG5vdCwgdG9vLiBXZSBjYW4gY29udGludWUgdG8gY2hvb3NlIHRvIGdlbmVyYXRl
IG5lZyBhbmQgbm90IGluc3RydWN0aW9ucworICAgICAgICBhdCB0aGUgcG9pbnQgd2UgZ2VuZXJh
dGUgY29kZSwgaWYgdGhpcyBpcyBiZW5lZmljaWFsICh0aGlzIHBhdGNoIG1ha2VzIGFsbCBhc3Nl
bWJsZXJzIHVzZQorICAgICAgICB0aGUgbW9yZSBjb21wYWN0IG5vdCBpbnN0cnVjdGlvbiB3aGVu
ZXZlciB0aGUgY29kZSBhdHRlbXB0cyB0byB4b3Igd2l0aCB0aGUgaW1tZWRpYXRlIC0xKS4KKwor
ICAgICAgICBUaGlzIGlzIGEgPjQlIHN1bnNwaWRlciBwcm9ncmVzc2lvbiwgYW5kIGEgMSUgd2lu
IG9uIHY4ICYga3Jha2VuLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckFSTSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyQVJNOjp4b3IzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQVJNdjcpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTXY3Ojp4b3IzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJNSVBTKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjp4b3IzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyU0g0Lmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclNINCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyU0g0Ojp4b3IzMik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uLmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjp4b3IzMik6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TmVnYXRlTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgIChK
SVQpOgorICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5oOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKExM
SW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAoTExJbnQp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6TmVnYXRlTm9kZTo6
TmVnYXRlTm9kZSk6CisgICAgICAgIChKU0M6OkJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9k
ZSk6CisgICAgICAgIChKU0M6Ok11bHROb2RlOjpNdWx0Tm9kZSk6CisgICAgICAgIChKU0M6OkRp
dk5vZGU6OkRpdk5vZGUpOgorICAgICAgICAoSlNDOjpNb2ROb2RlOjpNb2ROb2RlKToKKyAgICAg
ICAgKEpTQzo6U3ViTm9kZTo6U3ViTm9kZSk6CisgICAgICAgIChKU0M6OlVuc2lnbmVkUmlnaHRT
aGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rl
cy5oOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChKU0M6Ok5lZ2F0ZU5vZGU6OmV4
cHIpOgorICAgICAgICAoQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpCaXR3aXNlTm90
Tm9kZTo6ZXhwcik6CisgICAgICAgICogcGFyc2VyL1Jlc3VsdFR5cGUuaDoKKyAgICAgICAgKFJl
c3VsdFR5cGUpOgorICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMik6
CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OnN0cmluZ09yTnVtYmVyVHlwZSk6CisgICAgICAg
IChKU0M6OlJlc3VsdFR5cGU6OmZvckFkZCk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6OmZv
ckJpdE9wKToKKwogMjAxMi0wMi0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIExheW91dFRlc3RzL2Zhc3QveHBhdGgveHBhdGgtZnVuY3Rpb25hbC10ZXN0Lmh0
bWwgaXMgY3Jhc2hpbmcgaW4gdGhlIERGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTA4OTUyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1Niw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIucnNic19yKHNyY0Rlc3QsIHNyY0Rlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsK
ICAgICB9CiAKLSAgICB2b2lkIG5vdDMyKFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm12bnNfcihkZXN0LCBkZXN0KTsKLSAgICB9Ci0KICAgICB2b2lkIG9yMzIo
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm9ycnNfcihkZXN0LCBkZXN0LCBzcmMpOwpAQCAtMjM5LDcgKzIzNCwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVvcnNfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5n
ZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIGRlc3Qp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5lb3JzX3IoZGVzdCwgZGVz
dCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb3VudExlYWRpbmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMywxMSArMzAzLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5u
ZWcoc3JjRGVzdCwgc3JjRGVzdCk7CiAgICAgfQogCi0gICAgdm9pZCBub3QzMihSZWdpc3RlcklE
IHNyY0Rlc3QpCi0gICAgewotICAgICAgICBtX2Fzc2VtYmxlci5tdm4oc3JjRGVzdCwgc3JjRGVz
dCk7Ci0gICAgfQotCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKQEAg
LTQ0Nyw2ICs0NDIsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm4oZGVzdCwg
c3JjKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIEFSTVRodW1i
SW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0u
bV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9h
c3NlbWJsZXIuZW9yKGRlc3QsIHNyYywgYXJtSW1tKTsKQEAgLTQ2Myw3ICs0NjMsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewotICAgICAgICB4b3IzMihpbW0sIGRlc3QsIGRlc3QpOworICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdm4oZGVzdCwgZGVzdCk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHhvcjMyKGltbSwgZGVzdCwgZGVzdCk7CiAgICAg
fQogICAgIAogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5MSwxMSArMjkxLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNy
Y0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyY0Rlc3QpOwogICAgIH0KIAotICAgIHZvaWQg
bm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9y
KHNyY0Rlc3QsIHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwotICAgIH0KLQogICAgIHZv
aWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CkBAIC00NTgsNiArNDUzLDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvKgogICAgICAgICAgICAgbGkg
IGltbVRlbXAsIGltbQogICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
U0g0LmgJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDExICsyMDksNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAgICAgfQogCi0gICAgdm9p
ZCBub3QzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIubm90bFJlZyhzcmMsIGRlc3QpOwotICAgIH0KLQogICAgIHZvaWQgb3IzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIub3JsUmVnUmVnKHNyYywgZGVzdCk7CkBAIC0zODAsNiArMzc1LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAg
IHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3RsUmVnKHNyY0Rlc3QsIHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKICAgICAgICAgaWYgKChzcmNEZXN0ICE9IFNINFJlZ2lzdGVyczo6cjApIHx8IChp
bW0ubV92YWx1ZSA+IDI1NSkgfHwgKGltbS5tX3ZhbHVlIDwgMCkpIHsKICAgICAgICAgICAgIFJl
Z2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5s
b2FkQ29uc3RhbnQoKGltbS5tX3ZhbHVlKSwgc2NyKTsKQEAgLTE2ODEsMTEgKzE2ODEsNiBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5lZyhkc3QsIGRzdCk7CiAgICAgfQogCi0gICAg
dm9pZCBub3QzMihSZWdpc3RlcklEIGRzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5v
dGxSZWcoZHN0LCBkc3QpOwotICAgIH0KLQogICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQg
c2hpZnRhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdGFt
b3VudCA9PSBTSDRSZWdpc3RlcnM6OnIwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNp
b24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsMTYgKzIyMyw2IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVnbF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJh
c2UpOwogICAgIH0KIAotICAgIHZvaWQgbm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsK
LSAgICAgICAgbV9hc3NlbWJsZXIubm90bF9yKHNyY0Rlc3QpOwotICAgIH0KLQotICAgIHZvaWQg
bm90MzIoQWRkcmVzcyBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm90bF9t
KHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwotICAgIH0KLSAgICAKICAgICB2b2lkIG9y
MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpAQCAtMzc1LDcgKzM2NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShzcmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwog
ICAgIH0KIAotCiAgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIueG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtMzgz
LDExICszNzIsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBBZGRyZXNzIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5t
X3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID09IC0xKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0
LmJhc2UpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGlt
bS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5iYXNlKTsKICAgICB9CiAKICAgICB2b2lkIHhv
cjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CisgICAgICAgIGlm
IChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAgICAgbV9hc3NlbWJsZXIubm90bF9yKGRlc3QpOwor
ICAgICAgICBlbHNlCiAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmxfaXIoaW1tLm1fdmFsdWUsIGRl
c3QpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjksMTAgKzYyOSw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHBy
aW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJ0b19qc251bWJlciIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9uZWdhdGU6IHsKLSAgICAgICAg
ICAgIHByaW50VW5hcnlPcChleGVjLCBsb2NhdGlvbiwgaXQsICJuZWdhdGUiKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYWRkOiB7CiAgICAgICAgICAg
ICBwcmludEJpbmFyeU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImFkZCIpOwogICAgICAgICAgICAg
KytpdDsKQEAgLTY4NCwxMCArNjgwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfYml0bm90OiB7Ci0gICAgICAgICAgICBwcmludFVuYXJ5T3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAiYml0bm90Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2NoZWNrX2hhc19pbnN0YW5jZTogewogICAgICAgICAgICAg
aW50IGJhc2UgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGRhdGFMb2coIlslNGRd
IGNoZWNrX2hhc19pbnN0YW5jZVx0XHQgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgYmFzZSkuZGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbWFjcm8ob3BfcG9zdF9pbmMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfcG9z
dF9kZWMsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfdG9fanNudW1iZXIsIDMpIFwKLSAgICAgICAg
bWFjcm8ob3BfbmVnYXRlLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX2FkZCwgNSkgXAogICAgICAg
ICBtYWNybyhvcF9tdWwsIDUpIFwKICAgICAgICAgbWFjcm8ob3BfZGl2LCA1KSBcCkBAIC04Miw3
ICs4MSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9iaXRhbmQsIDUpIFwK
ICAgICAgICAgbWFjcm8ob3BfYml0eG9yLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX2JpdG9yLCA1
KSBcCi0gICAgICAgIG1hY3JvKG9wX2JpdG5vdCwgMykgXAogICAgICAgICBcCiAgICAgICAgIG1h
Y3JvKG9wX2NoZWNrX2hhc19pbnN0YW5jZSwgMikgXAogICAgICAgICBtYWNybyhvcF9pbnN0YW5j
ZW9mLCA1KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3MSw2ICs4NzEsMjQgQEAgUmVnaXN0ZXJJRCogVW5hcnlPcE5vZGU6OmVtaXRCeXRlY29kZShC
eQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFVuYXJ5T3Aob3Bjb2RlSUQoKSwgZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0KSwgc3JjKTsKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIE5lZ2F0ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUmVnaXN0ZXJJRCogTmVnYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc3JjMSA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGpz
TnVtYmVyKDApKTsKKyAgICBSZWdpc3RlcklEKiBzcmMyID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1f
ZXhwcik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3Bfc3ViLCBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEuZ2V0KCkpLCBzcmMxLmdldCgpLCBzcmMyLCBP
cGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwgbV9leHByLT5yZXN1
bHREZXNjcmlwdG9yKCkpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Jl
Z2lzdGVySUQqIEJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQoreworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
cmMyID0gZ2VuZXJhdG9yLmVtaXRMb2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwganNOdW1i
ZXIoLTEpKTsKKyAgICBSZWdpc3RlcklEKiBzcmMxID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhw
cik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0QmluYXJ5T3Aob3BfYml0eG9yLCBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNyYzEpLCBzcmMxLCBzcmMyLmdldCgpLCBPcGVyYW5k
VHlwZXMobV9leHByLT5yZXN1bHREZXNjcmlwdG9yKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJ
c0ludDMyKCkpKTsKK30KKwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9n
aWNhbE5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzE2LDI1ICsyMzE2LDYgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF90b19qc251bWJlcik7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
ICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9uZWdhdGUpIHsKLSAgICAgICAgLyogbmVnYXRl
IGRzdChyKSBzcmMocikKLQotICAgICAgICAgICBDb252ZXJ0cyByZWdpc3RlciBzcmMgdG8gbnVt
YmVyLCBuZWdhdGVzIGl0LCBhbmQgcHV0cyB0aGUKLSAgICAgICAgICAgcmVzdWx0IGluIHJlZ2lz
dGVyIGRzdC4KLSAgICAgICAgKi8KLSAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7
Ci0gICAgICAgIEpTVmFsdWUgc3JjID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpz
VmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYy5pc0ludDMyKCkgJiYgKHNyYy5hc0ludDMyKCkgJiAw
eDdmZmZmZmZmKSkgLy8gbm9uLXplcm8gYW5kIG5vIG92ZXJmbG93Ci0gICAgICAgICAgICBjYWxs
RnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IGpzTnVtYmVyKC1zcmMuYXNJbnQzMigpKTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKC1zcmMudG9O
dW1iZXIoY2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBDSEVDS19GT1JfRVhDRVBUSU9OKCk7Ci0g
ICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3VsdDsKLSAgICAgICAg
fQotCi0gICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX25lZ2F0ZSk7Ci0gICAgICAgIE5F
WFRfSU5TVFJVQ1RJT04oKTsKLSAgICB9CiAgICAgREVGSU5FX09QQ09ERShvcF9hZGQpIHsKICAg
ICAgICAgLyogYWRkIGRzdChyKSBzcmMxKHIpIHNyYzIocikKIApAQCAtMjU3MCwyNCArMjU1MSw2
IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWMKICAgICAgICAgdlBD
ICs9IE9QQ09ERV9MRU5HVEgob3BfYml0b3IpOwogICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7
CiAgICAgfQotICAgIERFRklORV9PUENPREUob3BfYml0bm90KSB7Ci0gICAgICAgIC8qIGJpdG5v
dCBkc3Qocikgc3JjKHIpCi0KLSAgICAgICAgICAgQ29tcHV0ZXMgYml0d2lzZSBOT1Qgb2YgcmVn
aXN0ZXIgc3JjMSAoY29udmVydGVkIHRvIGludDMyKSwKLSAgICAgICAgICAgYW5kIHB1dHMgdGhl
IHJlc3VsdCBpbiByZWdpc3RlciBkc3QuCi0gICAgICAgICovCi0gICAgICAgIGludCBkc3QgPSB2
UENbMV0udS5vcGVyYW5kOwotICAgICAgICBKU1ZhbHVlIHNyYyA9IGNhbGxGcmFtZS0+cih2UENb
Ml0udS5vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmMuaXNJbnQzMigpKQotICAg
ICAgICAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcih+c3JjLmFzSW50
MzIoKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcih+c3JjLnRvSW50MzIoY2FsbEZyYW1lKSk7Ci0gICAgICAgICAgICBDSEVDS19GT1JfRVhD
RVBUSU9OKCk7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IHJlc3Vs
dDsKLSAgICAgICAgfQotICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9iaXRub3QpOwot
ICAgICAgICBORVhUX0lOU1RSVUNUSU9OKCk7Ci0gICAgfQogICAgIERFRklORV9PUENPREUob3Bf
bm90KSB7CiAgICAgICAgIC8qIG5vdCBkc3Qocikgc3JjKHIpCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDE0ICsyMzUsMTAgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3Bf
aXNfb2JqZWN0KQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfc3RyaW5nKQogICAgICAg
ICBERUZJTkVfVU5BUllfT1Aob3BfaXNfdW5kZWZpbmVkKQotI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIERFRklORV9VTkFSWV9PUChvcF9uZWdhdGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5F
X1VOQVJZX09QKG9wX3R5cGVvZikKIAogICAgICAgICBERUZJTkVfT1Aob3BfYWRkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfYml0YW5kKQotICAgICAgICBERUZJTkVfT1Aob3BfYml0bm90KQogICAg
ICAgICBERUZJTkVfT1Aob3BfYml0b3IpCiAgICAgICAgIERFRklORV9PUChvcF9iaXR4b3IpCiAg
ICAgICAgIERFRklORV9PUChvcF9jYWxsKQpAQCAtMzAyLDkgKzI5OCw2IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX21vZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX21vdikKICAgICAgICAgREVGSU5FX09QKG9wX211bCkKLSNpZiBVU0Uo
SlNWQUxVRTMyXzY0KQotICAgICAgICBERUZJTkVfT1Aob3BfbmVnYXRlKQotI2VuZGlmCiAgICAg
ICAgIERFRklORV9PUChvcF9uZXEpCiAgICAgICAgIERFRklORV9PUChvcF9uZXFfbnVsbCkKICAg
ICAgICAgREVGSU5FX09QKG9wX25ld19hcnJheSkKQEAgLTQzNyw3ICs0MzAsNiBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBzd2l0Y2ggKG1faW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpKSB7CiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9hZGQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9iaXRhbmQpCi0gICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9iaXRub3QpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9iaXRvcikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX2JpdHhvcikKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2NhbGwpCkBAIC00NzUs
OSArNDY3LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX21ldGhvZF9jaGVjaykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX21vZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX211bCkKLSNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbmVnYXRlKQot
I2VuZGlmCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9uZXEpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9uZXdfYXJyYXkpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9uZXdfb2JqZWN0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMDg5
NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03ODAsNyArNzgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0X29w
X2FkZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYml0YW5kKEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXRub3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2JpdG9yKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9iaXR4b3IoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhbGwoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTg0MCw3ICs4MzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX21vZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbW92KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9tdWwoSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX25lZ2F0ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfbmVxKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXFfbnVsbChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9u
Kik7CkBAIC05MDAsNyArODk4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwotICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2JpdG5vdChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9iaXRvcihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9iaXR4b3Io
SW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAg
IHZvaWQgZW1pdFNsb3dfb3BfY2FsbChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKQEAgLTkzOCw3ICs5MzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9tZXRob2RfY2hlY2soSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfbW9kKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX211bChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKLSAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9uZWdhdGUoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfbmVxKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3Bf
bm90KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNw
cAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0
aG1ldGljMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw0MyArNDcsNiBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgSlNDIHsKIAotdm9pZCBKSVQ6OmVtaXRfb3BfbmVn
YXRlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgZHN0
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBzcmMgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotCi0gICAgZW1pdExvYWQoc3JjLCByZWdU
MSwgcmVnVDApOwotCi0gICAgSnVtcCBzcmNOb3RJbnQgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3QzMihaZXJvLCByZWdUMCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKSk7Ci0gICAg
bmVnMzIocmVnVDApOwotICAgIGVtaXRTdG9yZUludDMyKGRzdCwgcmVnVDAsIChkc3QgPT0gc3Jj
KSk7Ci0KLSAgICBKdW1wIGVuZCA9IGp1bXAoKTsKLQotICAgIHNyY05vdEludC5saW5rKHRoaXMp
OwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6Okxvd2VzdFRhZykpKTsKLQotICAgIHhvcjMyKFRydXN0ZWRJbW0zMigxIDw8IDMxKSwg
cmVnVDEpOwotICAgIHN0b3JlMzIocmVnVDEsIHRhZ0Zvcihkc3QpKTsKLSAgICBpZiAoZHN0ICE9
IHNyYykKLSAgICAgICAgc3RvcmUzMihyZWdUMCwgcGF5bG9hZEZvcihkc3QpKTsKLQotICAgIGVu
ZC5saW5rKHRoaXMpOwotfQotCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbmVnYXRlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIpCi17Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKLQotICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gMHg3ZmZmZmZmZiBjaGVjawotICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCi0KLSAgICBKSVRTdHViQ2FsbCBz
dHViQ2FsbCh0aGlzLCBjdGlfb3BfbmVnYXRlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChy
ZWdUMSwgcmVnVDApOwotICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsKLX0KLQogdm9pZCBKSVQ6OmVt
aXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgb3Bjb2RlLCB1bnNpZ25lZCBvcDEsIHVuc2lnbmVk
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbikKIHsK
ICAgICBKdW1wTGlzdCBub3RJbnQzMk9wMTsKQEAgLTQ0OCwzMSArNDExLDYgQEAgdm9pZCBKSVQ6
OmVtaXRTbG93X29wX2JpdHhvcihJbnN0cnVjdGlvbgogICAgIHN0dWJDYWxsLmNhbGwoZHN0KTsK
IH0KIAotLy8gQml0Tm90ICh+KQotCi12b2lkIEpJVDo6ZW1pdF9vcF9iaXRub3QoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBlbWl0TG9hZChzcmMsIHJlZ1QxLCByZWdUMCk7Ci0g
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6SW50MzJUYWcpKSk7Ci0KLSAgICBub3QzMihyZWdUMCk7Ci0gICAgZW1pdFN0b3JlQW5k
TWFwSW50MzIoZHN0LCByZWdUMSwgcmVnVDAsIGRzdCA9PSBzcmMsIE9QQ09ERV9MRU5HVEgob3Bf
Yml0bm90KSk7Ci19Ci0KLXZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRub3QoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRl
cikKLXsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OwotCi0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawotCi0gICAgSklUU3R1
YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2JpdG5vdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQocmVnVDEsIHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKGRzdCk7Ci19Ci0KIC8vIFBv
c3RJbmMgKGkrKykKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcG9zdF9pbmMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDE1ICs3NjQsNiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9lcShJbnN0cnVjdGlvbiogY3VycmVuCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfYml0bm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdU
MCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0g
ICAgbm90MzIocmVnVDApOwotICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAs
IHJlZ1QwKTsKLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3dpdGhfYmFzZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9yZXNvbHZlX3dpdGhfYmFzZSk7CkBAIC0xMzE5LDE0ICsxMzEwLDYg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2pmYWxzZShJbnN0cnVjdGlvbgogICAgIGVtaXRKdW1w
U2xvd1RvSG90KGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCksIGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOyAvLyBpbnZlcnRlZCEKIH0KIAotdm9pZCBKSVQ6OmVtaXRTbG93X29wX2Jp
dG5vdChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICBKSVRT
dHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfYml0bm90KTsKLSAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2p0cnVlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcyLDIxICsyNjcyLDYg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2xvYWRfdmFyYQogICAgIHJldHVybiBu
ZXdDYWxsRnJhbWU7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9uZWdhdGUpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0g
ICAgSlNWYWx1ZSBzcmMgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotCi0gICAgaWYg
KHNyYy5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KC1zcmMuYXNOdW1iZXIoKSkpOwotCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKC1zcmMudG9OdW1i
ZXIoY2FsbEZyYW1lKSk7Ci0gICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9O
KEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlX2Jhc2UpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwpAQCAtMzAzNiwxOSArMzAyMSw2IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXRu
b3QpCi17Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNW
YWx1ZSBzcmMgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotCi0gICAgQVNTRVJUKCFz
cmMuaXNJbnQzMigpKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIofnNyYy50b0ludDMyKGNhbGxG
cmFtZSkpOwotICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVk
SlNWYWx1ZSwgb3BfcmVzb2x2ZV93aXRoX2Jhc2UpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
cmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBleHRl
cm4gIkMiIHsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfYWRkKFNUVUJfQVJH
U19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2JpdGFu
ZChTVFVCX0FSR1NfREVDTEFSQVRJT04pOwotICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0
aV9vcF9iaXRub3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBK
SVRfU1RVQiBjdGlfb3BfYml0b3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVk
SlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfYml0eG9yKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAg
ICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihTVFVC
X0FSR1NfREVDTEFSQVRJT04pOwpAQCAtMzcyLDcgKzM3MSw2IEBAIGV4dGVybiAiQyIgewogICAg
IEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9sc2hpZnQoU1RVQl9BUkdTX0RFQ0xBUkFU
SU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfbW9kKFNUVUJfQVJHU19E
RUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX211bChTVFVC
X0FSR1NfREVDTEFSQVRJT04pOwotICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9u
ZWdhdGUoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RV
QiBjdGlfb3Bfbm90KFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUg
SklUX1NUVUIgY3RpX29wX25zdHJpY3RlcShTVFVCX0FSR1NfREVDTEFSQVRJT04pOwogICAgIEVu
Y29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9wb3N0X2RlYyhTVFVCX0FSR1NfREVDTEFSQVRJ
T04pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsMTIgKzU4Miw2IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19qc251bWIKICAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKIH0KIAot
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKLXsKLSAgICBMTElOVF9CRUdJ
TigpOwotICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fk
ZCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtNjY4LDEyICs2NjIsNiBAQCBMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQogICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYml0bm90KQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKH5MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Ci19Ci0KIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQCBMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJlX2RlYyk7CiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcG9zdF9pbmMpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Bv
c3RfZGVjKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19qc251bWJlcik7Ci1M
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKTsKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9hZGQpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211bCk7
CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3ViKTsKQEAgLTk3LDcgKzk2LDYgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpOwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdGFuZCk7CiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0b3IpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7Ci1MTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0bm90KTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luc3RhbmNlb2YpOwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdvcmtpbmcgY29w
eSkKQEAgLTk0NSwyOSArOTQ1LDYgQEAgX2xsaW50X29wX3RvX2pzbnVtYmVyOgogICAgIGRpc3Bh
dGNoKDMpCiAKIAotX2xsaW50X29wX25lZ2F0ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
bG9hZGkgOFtQQ10sIHQwCi0gICAgbG9hZGkgNFtQQ10sIHQzCi0gICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MCwgdDEsIHQyKQotICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3Jj
Tm90SW50Ci0gICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwotICAgIG5lZ2kg
dDIKLSAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQotICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQotICAgIGRpc3BhdGNoKDMpCi0ub3BOZWdh
dGVTcmNOb3RJbnQ6Ci0gICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKLSAgICB4
b3JpIDB4ODAwMDAwMDAsIHQxCi0gICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
LSAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KLSAgICBkaXNwYXRjaCgz
KQotCi0ub3BOZWdhdGVTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
Z2F0ZSkKLSAgICBkaXNwYXRjaCgzKQotCi0KIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50
ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIHNsb3dfcGF0aCkKICAgICBs
b2FkaSAxMltQQ10sIHQyCiAgICAgbG9hZGkgOFtQQ10sIHQwCkBAIC0xMTQ4LDIyICsxMTI1LDYg
QEAgX2xsaW50X29wX2JpdG9yOgogICAgICAgICA1KQogCiAKLV9sbGludF9vcF9iaXRub3Q6Ci0g
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDhbUENdLCB0MQotICAgIGxvYWRpIDRbUENd
LCB0MAotICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKLSAgICBiaW5lcSB0
MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKLSAgICBub3RpIHQzCi0gICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KLSAgICBkaXNwYXRjaCgzKQotCi0ub3BCaXRub3RTbG93OgotICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2JpdG5vdCkKLSAgICBkaXNwYXRjaCgzKQotCi0KIF9sbGludF9v
cF9jaGVja19oYXNfaW5zdGFuY2U6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRb
UENdLCB0MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTcsMTIgKzQxNywx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVn
YXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
VW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNhblJldXNlKCks
IGV4cHIsIG9wX25lZ2F0ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCisgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewog
ICAgIH0KIAogICAgIGlubGluZSBCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxp
bmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIsIG9wX2JpdG5vdCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQor
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKQEAgLTQ1MCwxOCArNDUyLDE4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KIAogICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGVDYW5SZXVzZSgpLCBleHByMSwgZXhw
cjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX211
bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIERpdk5v
ZGU6OkRpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGVDYW5SZXVzZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCiAKICAgICBp
bmxpbmUgTW9kTm9kZTo6TW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNh
blJldXNlKCksIGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9
CiAKQEAgLTQ3MSw3ICs0NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxp
bmUgU3ViTm9kZTo6U3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNhblJl
dXNlKCksIGV4cHIxLCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4
cHIxLCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAK
QEAgLTQ4Niw3ICs0ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUg
VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNhblJldXNlKCksIGV4cHIxLCBleHByMiwgb3BfdXJzaGlm
dCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03ODgsMTQgKzc4OCwzMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBFeHByZXNzaW9uTm9kZSogc3RyaXBVbmFy
eVBsdXMoKSB7IHJldHVybiBleHByKCk7IH0KICAgICB9OwogCi0gICAgY2xhc3MgTmVnYXRlTm9k
ZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CisgICAgY2xhc3MgTmVnYXRlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBOZWdhdGVOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KKyAgICAgICAgY29uc3QgRXhwcmVzc2lvbk5vZGUq
IGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKKworICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07
CiAKLSAgICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CisgICAg
Y2xhc3MgQml0d2lzZU5vdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworCisgICAg
cHJvdGVjdGVkOgorICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhw
cjsgfQorICAgICAgICBjb25zdCBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwcjsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworCisgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKIAogICAgIGNsYXNzIExvZ2ljYWxO
b3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUmVzdWx0VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUmVzdWx0VHlwZS5oCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1Jlc3VsdFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBPcGVyYW5kVHlwZXM7
CiAKICAgICAgICAgdHlwZWRlZiBjaGFyIFR5cGU7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBUeXBl
IFR5cGVSZXVzYWJsZSA9IDE7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVJbnQzMiAg
ICA9IDI7CisgICAgICAgIHN0YXRpYyBjb25zdCBUeXBlIFR5cGVJbnQzMiA9IDE7CiAgICAgICAg
IAogICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVOdW1iZXIgPSAweDA0OwogICAg
ICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlTWF5YmVTdHJpbmcgPSAweDA4OwpAQCAtNDgsMTEg
KzQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgYm9vbCBpc1JldXNhYmxlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IG1fdHlwZSAmIFR5cGVSZXVzYWJsZTsKLSAgICAgICAgfQotCiAgICAgICAgIGJvb2wgaXNJbnQz
MigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX3R5cGUgJiBUeXBlSW50MzI7CkBA
IC05MywxOSArODcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gUmVz
dWx0VHlwZShUeXBlTWF5YmVOdW1iZXIpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBz
dGF0aWMgUmVzdWx0VHlwZSBudW1iZXJUeXBlQ2FuUmV1c2UoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlUmV1c2FibGUgfCBUeXBlTWF5YmVOdW1iZXIpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBudW1iZXJUeXBl
Q2FuUmV1c2VJc0ludDMyKCkKKyAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgbnVtYmVyVHlwZUlz
SW50MzIoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlUmV1
c2FibGUgfCBUeXBlSW50MzIgfCBUeXBlTWF5YmVOdW1iZXIpOworICAgICAgICAgICAgcmV0dXJu
IFJlc3VsdFR5cGUoVHlwZUludDMyIHwgVHlwZU1heWJlTnVtYmVyKTsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgc3RyaW5nT3JOdW1iZXJUeXBlQ2FuUmV1
c2UoKQorICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBzdHJpbmdPck51bWJlclR5cGUoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gUmVzdWx0VHlwZShUeXBlUmV1c2FibGUgfCBUeXBl
TWF5YmVOdW1iZXIgfCBUeXBlTWF5YmVTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIFJlc3Vs
dFR5cGUoVHlwZU1heWJlTnVtYmVyIHwgVHlwZU1heWJlU3RyaW5nKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgc3RyaW5nVHlwZSgpCkBAIC0xMjEsMTUg
KzExMCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgZm9y
QWRkKFJlc3VsdFR5cGUgb3AxLCBSZXN1bHRUeXBlIG9wMikKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNOdW1iZXIoKSAmJiBvcDIuZGVmaW5pdGVseUlzTnVtYmVy
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGVDYW5SZXVzZSgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlKCk7CiAgICAgICAgICAgICBpZiAob3AxLmRlZmlu
aXRlbHlJc1N0cmluZygpIHx8IG9wMi5kZWZpbml0ZWx5SXNTdHJpbmcoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RyaW5nVHlwZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0cmluZ09yTnVt
YmVyVHlwZUNhblJldXNlKCk7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nT3JOdW1iZXJUeXBl
KCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIGZvckJp
dE9wKCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG51bWJlclR5cGVDYW5SZXVzZUlz
SW50MzIoKTsKKyAgICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlSXNJbnQzMigpOwogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129064</attachid>
            <date>2012-02-27 10:18:27 -0800</date>
            <delta_ts>2012-02-27 10:22:40 -0800</delta_ts>
            <desc>Remove op_bitnot</desc>
            <filename>79617.3.patch</filename>
            <type>text/plain</type>
            <size>25770</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5MDA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBA
CisyMDEyLTAyLTI3ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3BfbmVnYXRlIGFuZCBvcF9iaXRub3Qg
aW4gdGhlIERGRyBKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIG9wX2JpdG5vcCDigJMgdGhpcyBpcyByZWR1bmRhbnQsIH54ID09PSB4Xi0x
LgorICAgICAgICBUaGlzIGlzIGEgZnJhY3Rpb25hbCAoPDElKSBwcm9ncmVzc2lvbi4KKworICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAoTWFjcm9Bc3Nl
bWJsZXJBUk0pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6eG9yMzIpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChNYWNyb0Fz
c2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6eG9yMzIp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6eG9y
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclNINC5oOgorICAgICAgICAo
TWFjcm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6eG9y
MzIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorICAg
ICAgICAoTWFjcm9Bc3NlbWJsZXJYODZDb21tb24pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6eG9yMzIpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvT3Bj
b2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJpdHdpc2VOb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnBy
aXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAoSklUKToKKyAg
ICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoK
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChMTEludCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIHBhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6Ok5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5v
ZGUpOgorICAgICAgICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUpOgorICAg
ICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZOb2RlOjpE
aXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAgIChKU0M6
OlN1Yk5vZGU6OlN1Yk5vZGUpOgorICAgICAgICAoSlNDOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2Rl
OjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAg
ICAgICAgKEJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OmV4
cHIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgorICAg
ICAgICAoUmVzdWx0VHlwZSk6CisgICAgICAgIChKU0M6OlJlc3VsdFR5cGU6Om51bWJlclR5cGVJ
c0ludDMyKToKKyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6c3RyaW5nT3JOdW1iZXJUeXBlKToK
KyAgICAgICAgKEpTQzo6UmVzdWx0VHlwZTo6Zm9yQWRkKToKKyAgICAgICAgKEpTQzo6UmVzdWx0
VHlwZTo6Zm9yQml0T3ApOgorCiAyMDEyLTAyLTI3ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIEVycm9yIGNoZWNrIHJlZ2V4cCBtaW4gcXVhbnRpZmllcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk0uaAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsMTEgKzE1
Niw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIucnNic19yKHNyY0Rlc3QsIHNyY0Rl
c3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyKDApKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdDMyKFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm12bnNfcihkZXN0LCBk
ZXN0KTsKLSAgICB9Ci0KICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ycnNfcihkZXN0LCBkZXN0LCBzcmMp
OwpAQCAtMjM5LDcgKzIzNCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmVv
cnNfcihkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lz
dGVyczo6UzApKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIubXZuc19yKGRlc3QsIGRlc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5lb3JzX3IoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5t
X3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb3VudExlYWRp
bmdaZXJvczMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMywxMSArMzAzLDYgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5uZWcoc3JjRGVzdCwgc3JjRGVzdCk7CiAgICAg
fQogCi0gICAgdm9pZCBub3QzMihSZWdpc3RlcklEIHNyY0Rlc3QpCi0gICAgewotICAgICAgICBt
X2Fzc2VtYmxlci5tdm4oc3JjRGVzdCwgc3JjRGVzdCk7Ci0gICAgfQotCiAgICAgdm9pZCBvcjMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5vcnIoZGVzdCwgZGVzdCwgc3JjKTsKQEAgLTQ0Nyw2ICs0NDIsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5tdm4oZGVzdCwgc3JjKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1i
SW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1J
bW0uaXNWYWxpZCgpKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9yKGRlc3QsIHNyYywgYXJt
SW1tKTsKQEAgLTQ2Myw3ICs0NjMsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICB4b3IzMihpbW0s
IGRlc3QsIGRlc3QpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tdm4oZGVzdCwgZGVzdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHhvcjMyKGltbSwgZGVzdCwgZGVzdCk7CiAgICAgfQogICAgIAogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgJKHJl
dmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSwxMSArMjkxLDYgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8s
IHNyY0Rlc3QpOwogICAgIH0KIAotICAgIHZvaWQgbm90MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQot
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm9yKHNyY0Rlc3QsIHNyY0Rlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOwotICAgIH0KLQogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRl
c3QsIHNyYyk7CkBAIC00NTgsNiArNDUzLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgeG9yMzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGlt
bS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgZGVz
dCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KwogICAgICAgICAvKgogICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQogICAgICAgICAgICAg
eG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDEwODk1MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjA5LDExICsyMDksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VT
Y3JhdGNoKHNjcik7CiAgICAgfQogCi0gICAgdm9pZCBub3QzMihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm90bFJlZyhzcmMsIGRl
c3QpOwotICAgIH0KLQogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JsUmVnUmVnKHNyYywgZGVzdCk7CkBA
IC0zODAsNiArMzc1LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3RsUmVnKHNyY0Rlc3QsIHNyY0Rl
c3QpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKChzcmNE
ZXN0ICE9IFNINFJlZ2lzdGVyczo6cjApIHx8IChpbW0ubV92YWx1ZSA+IDI1NSkgfHwgKGltbS5t
X3ZhbHVlIDwgMCkpIHsKICAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNo
KCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoKGltbS5tX3ZhbHVlKSwg
c2NyKTsKQEAgLTE2ODEsMTEgKzE2ODEsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm5lZyhkc3QsIGRzdCk7CiAgICAgfQogCi0gICAgdm9pZCBub3QzMihSZWdpc3RlcklEIGRzdCkK
LSAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5vdGxSZWcoZHN0LCBkc3QpOwotICAgIH0KLQog
ICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRhbW91bnQsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGlmIChzaGlmdGFtb3VudCA9PSBTSDRSZWdpc3RlcnM6OnIwKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjMsMTYgKzIyMyw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubmVn
bF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJhc2UpOwogICAgIH0KIAotICAgIHZvaWQgbm90
MzIoUmVnaXN0ZXJJRCBzcmNEZXN0KQotICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm90bF9y
KHNyY0Rlc3QpOwotICAgIH0KLQotICAgIHZvaWQgbm90MzIoQWRkcmVzcyBzcmNEZXN0KQotICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIubm90bF9tKHNyY0Rlc3Qub2Zmc2V0LCBzcmNEZXN0LmJh
c2UpOwotICAgIH0KLSAgICAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ybF9ycihzcmMsIGRlc3QpOwpA
QCAtMzc1LDcgKzM2NSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3VibF9ybShz
cmMsIGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOwogICAgIH0KIAotCiAgICAgdm9pZCB4b3IzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ybF9ycihzcmMsIGRlc3QpOwpAQCAtMzgzLDExICszNzIsMTcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBZGRyZXNzIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVzdC5i
YXNlKTsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKQorICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm90bF9tKGRlc3Qub2Zmc2V0LCBkZXN0LmJhc2UpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JsX2ltKGltbS5tX3ZhbHVlLCBkZXN0Lm9mZnNldCwgZGVz
dC5iYXNlKTsKICAgICB9CiAKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkKKyAgICAg
ICAgbV9hc3NlbWJsZXIubm90bF9yKGRlc3QpOworICAgICAgICBlbHNlCiAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmxfaXIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwODk1
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODQsMTAgKzY4NCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgICsraXQ7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX2JpdG5vdDogewotICAgICAgICAgICAgcHJpbnRVbmFy
eU9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImJpdG5vdCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6IHsKICAgICAgICAg
ICAgIGludCBiYXNlID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBkYXRhTG9nKCJb
JTRkXSBjaGVja19oYXNfaW5zdGFuY2VcdFx0ICVzXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIGJhc2UpLmRhdGEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2JpdGFuZCwgNSkgXAogICAgICAgICBtYWNybyhvcF9i
aXR4b3IsIDUpIFwKICAgICAgICAgbWFjcm8ob3BfYml0b3IsIDUpIFwKLSAgICAgICAgbWFjcm8o
b3BfYml0bm90LCAzKSBcCiAgICAgICAgIFwKICAgICAgICAgbWFjcm8ob3BfY2hlY2tfaGFzX2lu
c3RhbmNlLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX2luc3RhbmNlb2YsIDUpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcxLDcgKzg3MSwxNSBAQCBS
ZWdpc3RlcklEKiBVbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5CiAgICAgcmV0dXJuIGdlbmVy
YXRvci5lbWl0VW5hcnlPcChvcGNvZGVJRCgpLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBzcmMpOwogfQogCi0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCaXR3
aXNlTm90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorUmVnaXN0
ZXJJRCogQml0d2lzZU5vdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNyYzIg
PSBnZW5lcmF0b3IuZW1pdExvYWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBqc051bWJlcigt
MSkpOworICAgIFJlZ2lzdGVySUQqIHNyYzEgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcChvcF9iaXR4b3IsIGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCwgc3JjMSksIHNyYzEsIHNyYzIuZ2V0KCksIE9wZXJhbmRUeXBl
cyhtX2V4cHItPnJlc3VsdERlc2NyaXB0b3IoKSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50
MzIoKSkpOworfQorIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2ljYWxO
b3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHZvaWQgTG9naWNh
bE5vdE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29s
IGZhbGxUaHJvdWdoTWVhbnNUcnVlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcwLDI0ICsyNTcwLDYgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4
ZWN1dGUoRXhlYwogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9iaXRvcik7CiAgICAg
ICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKICAgICB9Ci0gICAgREVGSU5FX09QQ09ERShvcF9iaXRu
b3QpIHsKLSAgICAgICAgLyogYml0bm90IGRzdChyKSBzcmMocikKLQotICAgICAgICAgICBDb21w
dXRlcyBiaXR3aXNlIE5PVCBvZiByZWdpc3RlciBzcmMxIChjb252ZXJ0ZWQgdG8gaW50MzIpLAot
ICAgICAgICAgICBhbmQgcHV0cyB0aGUgcmVzdWx0IGluIHJlZ2lzdGVyIGRzdC4KLSAgICAgICAg
Ki8KLSAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEpTVmFsdWUg
c3JjID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAg
aWYgKHNyYy5pc0ludDMyKCkpCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0
KSA9IGpzTnVtYmVyKH5zcmMuYXNJbnQzMigpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKH5zcmMudG9JbnQzMihjYWxsRnJhbWUpKTsKLSAg
ICAgICAgICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+
dW5jaGVja2VkUihkc3QpID0gcmVzdWx0OwotICAgICAgICB9Ci0gICAgICAgIHZQQyArPSBPUENP
REVfTEVOR1RIKG9wX2JpdG5vdCk7Ci0gICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsKLSAgICB9
CiAgICAgREVGSU5FX09QQ09ERShvcF9ub3QpIHsKICAgICAgICAgLyogbm90IGRzdChyKSBzcmMo
cikKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA4OTUyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDIsNyArMjQyLDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogCiAgICAg
ICAgIERFRklORV9PUChvcF9hZGQpCiAgICAgICAgIERFRklORV9PUChvcF9iaXRhbmQpCi0gICAg
ICAgIERFRklORV9PUChvcF9iaXRub3QpCiAgICAgICAgIERFRklORV9PUChvcF9iaXRvcikKICAg
ICAgICAgREVGSU5FX09QKG9wX2JpdHhvcikKICAgICAgICAgREVGSU5FX09QKG9wX2NhbGwpCkBA
IC00MzcsNyArNDM2LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAg
ICAgICAgc3dpdGNoIChtX2ludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKSkgewogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfYWRkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfYml0YW5kKQotICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfYml0bm90KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfYml0b3IpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9iaXR4b3IpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9jYWxsKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAx
MDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03ODAsNyArNzgwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBlbWl0
X29wX2FkZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYml0YW5kKEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9iaXRub3QoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2JpdG9yKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9iaXR4b3IoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NhbGwoSW5z
dHJ1Y3Rpb24qKTsKQEAgLTkwMCw3ICs4OTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7Ci0gICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfYml0bm90KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2JpdG9yKEluc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29w
X2JpdHhvcihJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsK
ICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9jYWxsKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dD
YXNlRW50cnk+OjppdGVyYXRvciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NDgsMzEgKzQ0OCw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXR4b3IoSW5zdHJ1
Y3Rpb24KICAgICBzdHViQ2FsbC5jYWxsKGRzdCk7CiB9CiAKLS8vIEJpdE5vdCAofikKLQotdm9p
ZCBKSVQ6OmVtaXRfb3BfYml0bm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17
Ci0gICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAg
ICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotCi0gICAg
ZW1pdExvYWQoc3JjLCByZWdUMSwgcmVnVDApOwotICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5v
dEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwotCi0gICAg
bm90MzIocmVnVDApOwotICAgIGVtaXRTdG9yZUFuZE1hcEludDMyKGRzdCwgcmVnVDEsIHJlZ1Qw
LCBkc3QgPT0gc3JjLCBPUENPREVfTEVOR1RIKG9wX2JpdG5vdCkpOwotfQotCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfYml0bm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgdW5zaWduZWQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLQotICAgIGxpbmtTbG93Q2FzZShpdGVy
KTsgLy8gaW50MzIgY2hlY2sKLQotICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9v
cF9iaXRub3QpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxLCByZWdUMCk7Ci0gICAg
c3R1YkNhbGwuY2FsbChkc3QpOwotfQotCiAvLyBQb3N0SW5jIChpKyspCiAKIHZvaWQgSklUOjpl
bWl0X29wX3Bvc3RfaW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEwODk1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2NCwxNSArNzY0LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24q
IGN1cnJlbgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2JpdG5vdChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDApOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotICAgIG5vdDMyKHJlZ1QwKTsKLSAgICBlbWl0
RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7Ci0gICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLX0KLQogdm9pZCBK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV93aXRoX2Jhc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV93
aXRoX2Jhc2UpOwpAQCAtMTMxOSwxNCArMTMxMCw2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9q
ZmFsc2UoSW5zdHJ1Y3Rpb24KICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVy
bywgcmVnVDApLCBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsgLy8gaW52ZXJ0ZWQh
CiB9CiAKLXZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRub3QoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKLXsKLSAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2JpdG5vdCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQocmVnVDApOwotICAgIHN0dWJD
YWxsLmNhbGwoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci19Ci0KIHZvaWQgSklU
OjplbWl0U2xvd19vcF9qdHJ1ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lv
biAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAzNiwxOSArMzAzNiw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXRub3QpCi17Ci0g
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCi0gICAgSlNWYWx1ZSBzcmMg
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwotCi0gICAgQVNTRVJUKCFzcmMuaXNJbnQz
MigpKTsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIofnNyYy50b0ludDMyKGNhbGxGcmFtZSkpOwot
ICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfcmVzb2x2ZV93aXRoX2Jhc2UpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNr
RnJhbWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkocmV2aXNpb24g
MTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMzAsNyArMzMwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBleHRlcm4gIkMiIHsK
ICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBjdGlfb3BfYWRkKFNUVUJfQVJHU19ERUNMQVJB
VElPTik7CiAgICAgRW5jb2RlZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2JpdGFuZChTVFVCX0FS
R1NfREVDTEFSQVRJT04pOwotICAgIEVuY29kZWRKU1ZhbHVlIEpJVF9TVFVCIGN0aV9vcF9iaXRu
b3QoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBKSVRfU1RVQiBj
dGlfb3BfYml0b3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKTsKICAgICBFbmNvZGVkSlNWYWx1ZSBK
SVRfU1RVQiBjdGlfb3BfYml0eG9yKFNUVUJfQVJHU19ERUNMQVJBVElPTik7CiAgICAgRW5jb2Rl
ZEpTVmFsdWUgSklUX1NUVUIgY3RpX29wX2NhbGxfTm90SlNGdW5jdGlvbihTVFVCX0FSR1NfREVD
TEFSQVRJT04pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCShyZXZpc2lvbiAxMDg5NTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjgsMTIgKzY2OCw2
IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCiAgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7CiB9CiAKLUxMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5j
ZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwODk1MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3
ICs5Nyw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0KTsKIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpOwogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2JpdG9yKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3Ip
OwotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG5vdCk7CiBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKTsKIExMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF90eXBlb2YpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDEwODk1MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDIyICsxMTQ4LDYgQEAgX2xsaW50X29wX2JpdG9yOgogICAg
ICAgICA1KQogCiAKLV9sbGludF9vcF9iaXRub3Q6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGxvYWRpIDhbUENdLCB0MQotICAgIGxvYWRpIDRbUENdLCB0MAotICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDEsIHQyLCB0MykKLSAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNs
b3cKLSAgICBub3RpIHQzCi0gICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KLSAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KLSAgICBkaXNwYXRjaCgzKQot
Ci0ub3BCaXRub3RTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2JpdG5v
dCkKLSAgICBkaXNwYXRjaCgzKQotCi0KIF9sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRpIDRbUENdLCB0MQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDEw
ODk1MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MTcsMTIgKzQxNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9CiAKICAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZUNhblJldXNlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAgICAg
ICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4
cHIsIG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIEJpdHdpc2VOb3ROb2Rl
OjpCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0g
ICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwciwgb3BfYml0bm90KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmZvckJpdE9wKCkpCisgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAg
IH0KIApAQCAtNDUwLDE4ICs0NTEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAg
aW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZUNhblJldXNlKCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKICAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6
bnVtYmVyVHlwZUNhblJldXNlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKIAogICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlQ2FuUmV1c2UoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgewogICAgIH0KIApAQCAtNDcxLDcgKzQ3Miw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH0KIAogICAgIGlubGluZSBTdWJOb2RlOjpTdWJOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlQ2FuUmV1c2UoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIApAQCAtNDg2LDcgKzQ4Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH0KIAogICAgIGlubGluZSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJp
Z2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJp
bmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlQ2FuUmV1c2UoKSwg
ZXhwcjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIx
LCBleHByMiwgb3BfdXJzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxMDg5NTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc5MywxMSArNzkzLDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOZWdhdGVOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICB9OwogCi0gICAgY2xhc3MgQml0d2lzZU5vdE5v
ZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgeworICAgIGNsYXNzIEJpdHdpc2VOb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEJpdHdpc2VOb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICB9OwogCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQorICAgICAgICBjb25z
dCBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworCisgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHI7CisgICAgfTsKKyAKICAgICBjbGFzcyBMb2dpY2FsTm90Tm9kZSA6IHB1YmxpYyBV
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBMb2dpY2FsTm90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3Vs
dFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Jlc3Vs
dFR5cGUuaAkocmV2aXNpb24gMTA4OTUyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9SZXN1bHRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgT3BlcmFuZFR5cGVzOwogCiAgICAgICAgIHR5
cGVkZWYgY2hhciBUeXBlOwotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlUmV1c2FibGUg
PSAxOwotICAgICAgICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlSW50MzIgICAgPSAyOworICAgICAg
ICBzdGF0aWMgY29uc3QgVHlwZSBUeXBlSW50MzIgPSAxOwogICAgICAgICAKICAgICAgICAgc3Rh
dGljIGNvbnN0IFR5cGUgVHlwZU1heWJlTnVtYmVyID0gMHgwNDsKICAgICAgICAgc3RhdGljIGNv
bnN0IFR5cGUgVHlwZU1heWJlU3RyaW5nID0gMHgwODsKQEAgLTQ4LDExICs0Nyw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wg
aXNSZXVzYWJsZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3R5cGUgJiBUeXBl
UmV1c2FibGU7Ci0gICAgICAgIH0KLQogICAgICAgICBib29sIGlzSW50MzIoKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gbV90eXBlICYgVHlwZUludDMyOwpAQCAtOTMsMTkgKzg3LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZU1h
eWJlTnVtYmVyKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgc3RhdGljIFJlc3VsdFR5
cGUgbnVtYmVyVHlwZUNhblJldXNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFJl
c3VsdFR5cGUoVHlwZVJldXNhYmxlIHwgVHlwZU1heWJlTnVtYmVyKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgc3RhdGljIFJlc3VsdFR5cGUgbnVtYmVyVHlwZUNhblJldXNlSXNJbnQz
MigpCisgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIG51bWJlclR5cGVJc0ludDMyKCkKICAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZVJldXNhYmxlIHwgVHlwZUlu
dDMyIHwgVHlwZU1heWJlTnVtYmVyKTsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5
cGVJbnQzMiB8IFR5cGVNYXliZU51bWJlcik7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHN0cmluZ09yTnVtYmVyVHlwZUNhblJldXNlKCkKKyAgICAgICAg
c3RhdGljIFJlc3VsdFR5cGUgc3RyaW5nT3JOdW1iZXJUeXBlKCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIFJlc3VsdFR5cGUoVHlwZVJldXNhYmxlIHwgVHlwZU1heWJlTnVtYmVyIHwg
VHlwZU1heWJlU3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiBSZXN1bHRUeXBlKFR5cGVNYXli
ZU51bWJlciB8IFR5cGVNYXliZVN0cmluZyk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBSZXN1bHRUeXBlIHN0cmluZ1R5cGUoKQpAQCAtMTIxLDE1ICsxMTAsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBSZXN1bHRUeXBlIGZvckFkZChSZXN1bHRUeXBl
IG9wMSwgUmVzdWx0VHlwZSBvcDIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChvcDEuZGVm
aW5pdGVseUlzTnVtYmVyKCkgJiYgb3AyLmRlZmluaXRlbHlJc051bWJlcigpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBudW1iZXJUeXBlQ2FuUmV1c2UoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbnVtYmVyVHlwZSgpOwogICAgICAgICAgICAgaWYgKG9wMS5kZWZpbml0ZWx5SXNTdHJpbmco
KSB8fCBvcDIuZGVmaW5pdGVseUlzU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
cmluZ1R5cGUoKTsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdPck51bWJlclR5cGVDYW5SZXVz
ZSgpOworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ09yTnVtYmVyVHlwZSgpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUmVzdWx0VHlwZSBmb3JCaXRPcCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBudW1iZXJUeXBlQ2FuUmV1c2VJc0ludDMyKCk7CisgICAg
ICAgICAgICByZXR1cm4gbnVtYmVyVHlwZUlzSW50MzIoKTsKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToK
</data>
<flag name="review"
          id="131617"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129110</attachid>
            <date>2012-02-27 15:22:43 -0800</date>
            <delta_ts>2012-02-27 15:35:11 -0800</delta_ts>
            <desc>ArithNegate</desc>
            <filename>79617.4.patch</filename>
            <type>text/plain</type>
            <size>22967</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5MDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDEyLTAyLTI3ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3BfbmVnYXRlIGFuZCBvcF9iaXRub3Qg
aW4gdGhlIERGRyBKSVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5NjE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIGFuIEFyaXRoTmVnYXRlIG9wIHRvIHRoZSBERkcgSklULCB0byBpbXBsZW1lbnQg
b3BfbmVnYXRlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHN1cHBvcnQgZm9yIG9w
X25lZ2F0ZSB0byB0aGUgSlNWQUxVRTY0IGJhc2VsaW5lIEpJVAorICAgICAgICAoSlNWQUxVRTMy
XzY0IGFscmVhZHkgaGFkIHRoaXMpLCBzbyB0aGF0IHdlIGNhbiBwcm9maWxlIHRoZSBzbG93cGF0
aCB1c2FnZS4KKworICAgICAgICBUaGlzIGlzIGEgMi41JS0zJSBTdW5zcGlkZXIgcHJvZ3Jlc3Np
b24gYW5kIGEgMSUgd2luIG9uIEtyYWtlbi4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6c3ViX1MpOgorICAgICAg
ICAgICAgLSBBZGRlZCBzdWJfUyBmcm9tIGltbWVkaWF0ZS4KKyAgICAgICAgKEFSTXY3QXNzZW1i
bGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnZuZWcpOgorICAgICAgICAgICAg
LSBBZGRlZCBkb3VibGUgbmVnYXRlLgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6Om5lZ2F0ZURvdWJs
ZSk6CisgICAgICAgICAgICAtIEFkZGVkIGRvdWJsZSBuZWdhdGUuCisgICAgICAgIChNYWNyb0Fz
c2VtYmxlckFSTXY3KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAgICAgLSBBZGRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODYuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2KToKKyAgICAgICAgICAg
IC0gbW92ZWQgbG9hZERvdWJsZSwgYWJzRG91YmxlIHRvIGNvbW1vbi4KKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmFic0Rv
dWJsZSk6CisgICAgICAgICAgICAtIGltcGxlbWVudGF0aW9uIGNhbiBiZSBzaGFyZWQuCisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpuZWdhdGVEb3VibGUpOgorICAgICAg
ICAgICAgLSBBZGRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246Omxv
YWREb3VibGUpOgorICAgICAgICAgICAgLSBhbGxvdyBhYnNEb3VibGUgdG8gaGF2ZSBhIGNvbW1v
biBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZf
NjQuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyWDg2XzY0KToKKyAgICAgICAgICAgIC0gbW92
ZWQgbG9hZERvdWJsZSwgYWJzRG91YmxlIHRvIGNvbW1vbi4KKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgICAgICAtIHN1cHBvcnQgQXJpdGhOZWdhdGUuCisgICAgICAgICogZGZnL0RG
R0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFy
aXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICAgICAtIHN1
cHBvcnQgQXJpdGhOZWdhdGUuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZVNhZmUpOgorICAgICAgICAg
ICAgLSBzdXBwb3J0IEFyaXRoTmVnYXRlLgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgICAgIC0gc3VwcG9ydCBvcF9uZWdhdGUuCisgICAg
ICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAgICAgLSBzdXBwb3J0IEFyaXRoTmVnYXRlLgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21w
aWxlT3Bjb2RlKToKKyAgICAgICAgICAgIC0gc3VwcG9ydCBvcF9uZWdhdGUuCisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om5lZ2F0ZVNob3VsZFNw
ZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAgICAgLSBzdXBwb3J0IEFyaXRoTmVnYXRlLgorICAg
ICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQXJpdGhO
b2RlRmxhZ3MpOgorICAgICAgICAgICAgLSBzdXBwb3J0IEFyaXRoTmVnYXRlLgorICAgICAgICAq
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICAgICAt
IHN1cHBvcnQgQXJpdGhOZWdhdGUuCisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRl
KToKKyAgICAgICAgICAgIC0gc3VwcG9ydCBBcml0aE5lZ2F0ZS4KKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKFNwZWN1bGF0aXZlSklUKToKKyAgICAgICAgICAg
IC0gc3VwcG9ydCBBcml0aE5lZ2F0ZS4KKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAgICAgLSBzdXBwb3J0IEFyaXRoTmVnYXRlLgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICAgICAtIHN1cHBvcnQgQXJpdGhOZWdhdGUuCisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAgICAg
LSBBZGQgc3VwcG9ydCBmb3Igb3BfbmVnYXRlIGluIEpTVkFMVUU2NC4KKyAgICAgICAgKiBqaXQv
SklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX25lZ2F0ZSk6CisgICAgICAgICAgICAtIEFk
ZCBzdXBwb3J0IGZvciBvcF9uZWdhdGUgaW4gSlNWQUxVRTY0LgorCiAyMDEyLTAyLTI3ICBPbGl2
ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEwODEx
Mik6IEFXUyBNYW5hZ2VtZW50IENvbnNvbGUgYXQgYW1hem9uLmNvbSBmYWlscyB0byBpbml0aWFs
aXplCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fz
c2VtYmxlci5oCShyZXZpc2lvbiAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4NCw2ICs1ODQsNyBA
QCBwcml2YXRlOgogICAgICAgICBPUF9WTU9WX1QyICAgICAgPSAweEVFQjAsCiAgICAgICAgIE9Q
X1ZNT1ZfSU1NX1QyICA9IDB4RUVCMCwKICAgICAgICAgT1BfVk1SUyAgICAgICAgID0gMHhFRUIw
LAorICAgICAgICBPUF9WTkVHX1QyICAgICAgPSAweEVFQjAsCiAgICAgICAgIE9QX1ZTUVJUX1Qx
ICAgICA9IDB4RUVCMCwKICAgICAgICAgT1BfQl9UM2EgICAgICAgID0gMHhGMDAwLAogICAgICAg
ICBPUF9CX1Q0YSAgICAgICAgPSAweEYwMDAsCkBAIC02MDEsNiArNjAyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgT1BfU1VCX1NfaW1tX1QzID0gMHhGMUIwLAogICAgICAgICBPUF9DTVBfaW1tX1Qy
ICAgPSAweEYxQjAsCiAgICAgICAgIE9QX1JTQl9pbW1fVDIgICA9IDB4RjFDMCwKKyAgICAgICAg
T1BfUlNCX1NfaW1tX1QyID0gMHhGMUQwLAogICAgICAgICBPUF9BRERfaW1tX1Q0ICAgPSAweEYy
MDAsCiAgICAgICAgIE9QX01PVl9pbW1fVDMgICA9IDB4RjI0MCwKICAgICAgICAgT1BfU1VCX2lt
bV9UNCAgID0gMHhGMkEwLApAQCAtNjQ5LDYgKzY1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9Q
X1ZBQlNfVDJiICAgICA9IDB4MEE0MCwKICAgICAgICAgT1BfVkNNUGIgICAgICAgID0gMHgwQTQw
LAogICAgICAgICBPUF9WQ1ZUX0ZQSVZGUGIgPSAweDBBNDAsCisgICAgICAgIE9QX1ZORUdfVDJi
ICAgICA9IDB4MEE0MCwKICAgICAgICAgT1BfVlNVQl9UMmIgICAgID0gMHgwQTQwLAogICAgICAg
ICBPUF9WU1FSVF9UMWIgICAgPSAweDBBNDAsCiAgICAgICAgIE9QX05PUF9UMmIgICAgICA9IDB4
ODAwMCwKQEAgLTE1ODQsNiArMTU4NywxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVy
LnR3b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbShPUF9TVUJfU19pbW1fVDMsIHJuLCByZCwg
aW1tKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3ViX1MoUmVnaXN0ZXJJRCBy
ZCwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tLCBSZWdpc3RlcklEIHJuKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKHJkICE9IEFSTVJlZ2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQocm4gIT0gQVJN
UmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VSVChpbW0uaXNWYWxpZCgpKTsKKyAgICAgICAg
QVNTRVJUKGltbS5pc1VJbnQxMigpKTsKKworICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1
aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfUlNCX1NfaW1tX1QyLCBybiwgcmQsIGltbSk7CisgICAg
fQorCiAgICAgLy8gTm90IGFsbG93ZWQgaW4gYW4gSVQgKGlmIHRoZW4pIGJsb2NrPwogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzdWJfUyhSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuLCBSZWdp
c3RlcklEIHJtLCBTaGlmdFR5cGVBbmRBbW91bnQgc2hpZnQpCiAgICAgewpAQCAtMTczNCw2ICsx
NzQ3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkFCU19UMiwg
T1BfVkFCU19UMmIsIHRydWUsIFZGUE9wZXJhbmQoMTYpLCByZCwgcm0pOwogICAgIH0KIAorICAg
IHZvaWQgdm5lZyhGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0ZXJJRCBybSkK
KyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZORUdfVDIsIE9QX1ZORUdfVDJi
LCB0cnVlLCBWRlBPcGVyYW5kKDEpLCByZCwgcm0pOworICAgIH0KKwogICAgIHZvaWQgdnNxcnQo
RlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCiAgICAgewogICAg
ICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WU1FSVF9UMSwgT1BfVlNRUlRfVDFiLCB0cnVlLCBW
RlBPcGVyYW5kKDE3KSwgcmQsIHJtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxMDkwMDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcu
aAkod29ya2luZyBjb3B5KQpAQCAtODg2LDYgKzg4NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLnZhYnMoZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG5lZ2F0ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZuZWcoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQz
MlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3YoZnBUZW1wUmVnaXN0ZXJBc1NpbmdsZSgpLCBzcmMpOwpAQCAt
MTQwNCw2ICsxNDA5LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsK
KyAgICAgICAgQVJNVGh1bWJJbW1lZGlhdGUgemVybyA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtl
VUludDEyKDApOworICAgICAgICBtX2Fzc2VtYmxlci5zdWJfUyhzcmNEZXN0LCB6ZXJvLCBzcmNE
ZXN0KTsKKyAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CisgICAgfQorCiAg
ICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIub3JyX1MoZGVzdCwg
ZGVzdCwgc3JjKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2LmgJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpA
QCAtOTMsMTIgKzkzLDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGRzZF9tcihh
ZGRyZXNzLm1fcHRyLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWREb3VibGUoY29uc3Qg
dm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBBU1NFUlQo
aXNTU0UyUHJlc2VudCgpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92c2RfbXIoYWRkcmVzcywg
ZGVzdCk7Ci0gICAgfQotCiAgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBj
b25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQo
KSk7CkBAIC0xMTAsMTQgKzEwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0
c2kyc2RfbXIoc3JjLm1fcHRyLCBkZXN0KTsKICAgICB9CiAKLSAgICB2b2lkIGFic0RvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgQVNTRVJU
KHNyYyAhPSBkc3QpOwotICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG5lZ2F0aXZlWmVyb0Nv
bnN0YW50ID0gLTAuMDsKLSAgICAgICAgbG9hZERvdWJsZSgmbmVnYXRpdmVaZXJvQ29uc3RhbnQs
IGRzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFuZG5wZF9ycihzcmMsIGRzdCk7Ci0gICAgfQot
CiAgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIHZvaWQqIGFkZHJlc3MpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsX2kzMm0oaW1tLm1fdmFsdWUsIGFkZHJlc3MpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTA5MDA4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCwxMSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8WDg2QXNzZW1i
bGVyPiB7Citwcm90ZWN0ZWQ6CisjaWYgQ1BVKFg4Nl82NCkKKyAgICBzdGF0aWMgY29uc3QgWDg2
UmVnaXN0ZXJzOjpSZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEx
OworI2VuZGlmCisKICAgICBzdGF0aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJpdEludmVy
dCA9IDB4MTA7CiAgICAgc3RhdGljIGNvbnN0IGludCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFs
ID0gMHgyMDsKICAgICBzdGF0aWMgY29uc3QgaW50IERvdWJsZUNvbmRpdGlvbkJpdHMgPSBEb3Vi
bGVDb25kaXRpb25CaXRJbnZlcnQgfCBEb3VibGVDb25kaXRpb25CaXRTcGVjaWFsOwpAQCAtNDE5
LDYgKzQyNCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRzZF9ycihzcmMs
IGRzdCk7CiAgICAgfQogCisgICAgdm9pZCBhYnNEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVChzcmMgIT0gZHN0KTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBuZWdhdGl2ZVplcm9Db25zdGFudCA9IC0wLjA7CisgICAg
ICAgIGxvYWREb3VibGUoJm5lZ2F0aXZlWmVyb0NvbnN0YW50LCBkc3QpOworICAgICAgICBtX2Fz
c2VtYmxlci5hbmRucGRfcnIoc3JjLCBkc3QpOworICAgIH0KKworICAgIHZvaWQgbmVnYXRlRG91
YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoc3JjICE9IGRzdCk7CisgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbmVnYXRpdmVa
ZXJvQ29uc3RhbnQgPSAtMC4wOworICAgICAgICBsb2FkRG91YmxlKCZuZWdhdGl2ZVplcm9Db25z
dGFudCwgZHN0KTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ycGRfcnIoc3JjLCBkc3QpOworICAg
IH0KKworCiAgICAgLy8gTWVtb3J5IGFjY2VzcyBvcGVyYXRpb25zOgogICAgIC8vCiAgICAgLy8g
TG9hZHMgYXJlIG9mIHRoZSBmb3JtIGxvYWQoYWRkcmVzcywgZGVzdGluYXRpb24pIGFuZCBzdG9y
ZXMgb2YgdGhlIGZvcm0KQEAgLTYxNSw2ICs2MzcsMTcgQEAgcHVibGljOgogICAgICAgICAgICAg
bV9hc3NlbWJsZXIubW92c2RfcnIoc3JjLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWRE
b3VibGUoY29uc3Qgdm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworI2lm
IENQVShYODYpCisgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5tb3ZzZF9tcihhZGRyZXNzLCBkZXN0KTsKKyNlbHNlCisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZERvdWJs
ZShzY3JhdGNoUmVnaXN0ZXIsIGRlc3QpOworI2VuZGlmCisgICAgfQorCiAgICAgdm9pZCBsb2Fk
RG91YmxlKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkocmV2
aXNpb24gMTA5MDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5ICszNSw2IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24gewotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCBYODZSZWdpc3Rl
cnM6OlJlZ2lzdGVySUQgc2NyYXRjaFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTE7Ci0KIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0VpZ2h0OwogCkBA
IC04OCwxMiArODUsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxv
YWREb3VibGUoY29uc3Qgdm9pZCogYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCi0gICAgewot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0g
ICAgICAgIGxvYWREb3VibGUoc2NyYXRjaFJlZ2lzdGVyLCBkZXN0KTsKLSAgICB9Ci0KICAgICB2
b2lkIGFkZERvdWJsZShBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0
Y2hSZWdpc3Rlcik7CkBAIC0xMDYsMTQgKzk3LDYgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5jdnRzaTJzZF9ycihzY3JhdGNoUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAotICAgIHZv
aWQgYWJzRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCi0gICAgewot
ICAgICAgICBBU1NFUlQoc3JjICE9IGRzdCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
bmVnYXRpdmVaZXJvQ29uc3RhbnQgPSAtMC4wOwotICAgICAgICBsb2FkRG91YmxlKCZuZWdhdGl2
ZVplcm9Db25zdGFudCwgZHN0KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kbnBkX3JyKHNyYywg
ZHN0KTsKLSAgICB9Ci0KICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCog
YWRkcmVzcykKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTA5MDA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDYgKzM0
MSwxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAgICAg
ICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGlj
dERvdWJsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBBcml0
aE11bDoKICAgICBjYXNlIEFyaXRoRGl2OgogICAgIGNhc2UgQXJpdGhNaW46CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyaXRoTm9kZUZsYWdzSW5mZXJlbmNlUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxh
Z3NJbmZlcmVuY2VQaGFzZS5jcHAJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJpdGhOb2RlRmxhZ3NJbmZlcmVuY2VQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMSw2ICsxMzEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBBcml0aE5lZ2F0ZTogeworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLm1lcmdlQXJpdGhOb2Rl
RmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAg
IAogICAgICAgICBjYXNlIEFyaXRoTXVsOgogICAgICAgICBjYXNlIEFyaXRoRGl2OiB7CiAgICAg
ICAgICAgICAvLyBBcyBzb29uIGFzIGEgbXVsdGlwbHkgaGFwcGVucywgd2UgY2FuIGVhc2lseSBl
bmQgdXAgaW4gdGhlIHBhcnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg2
LDYgKzY4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6CiAgICAg
ICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6CisgICAgICAgIGNhc2Ug
QXJpdGhOZWdhdGU6CiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhN
b2Q6IC8vIGZvciBBcml0aE1vZGUgIk1heU92ZXJmbG93IiBtZWFucyB3ZSB0cmllZCB0byBkaXZp
ZGUgYnkgemVybywgb3Igd2Ugc2F3IGRvdWJsZS4KICAgICAgICAgICAgIG1fZ3JhcGhbbm9kZUlu
ZGV4XS5tZXJnZUFyaXRoTm9kZUZsYWdzKE5vZGVNYXlPdmVyZmxvdyk7CkBAIC0xNjA1LDYgKzE2
MDYsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3Bfc3ViKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3Bf
bmVnYXRlOiB7CisgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQsIG1ha2VTYWZlKGFkZFRvR3JhcGgoQXJpdGhOZWdhdGUsIE9wSW5mbyhOb2Rl
VXNlQm90dG9tKSwgb3AxKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmVnYXRlKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfbXVsOiB7CiAgICAgICAgICAgICAvLyBNdWx0
aXBseSByZXF1aXJlcyB0aGF0IHRoZSBpbnB1dHMgYXJlIG5vdCB0cnVuY2F0ZWQsIHVuZm9ydHVu
YXRlbHkuCiAgICAgICAgICAgICBOb2RlSW5kZXggb3AxID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNiArNTk4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OgogICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAg
ICAgICBjYXNlIEFyaXRoU3ViOgorICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOgogICAgICAgICBj
YXNlIEFyaXRoTXVsOgogICAgICAgICBjYXNlIEFyaXRoTW9kOgogICAgICAgICBjYXNlIEFyaXRo
RGl2OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CShyZXZpc2lvbiAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIGlubGluZSBib29sIGNh
bkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3Bvc3RfZGVjOgogICAgIGNh
c2Ugb3BfYWRkOgogICAgIGNhc2Ugb3Bfc3ViOgorICAgIGNhc2Ugb3BfbmVnYXRlOgogICAgIGNh
c2Ugb3BfbXVsOgogICAgIGNhc2Ugb3BfbW9kOgogICAgIGNhc2Ugb3BfZGl2OgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTA5MDA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNiAr
MTc3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIobGVmdCwgcmlnaHQpICYmIGFkZC5jYW5TcGVjdWxhdGVJbnRlZ2VyKCk7CiAgICAgfQog
ICAgIAorICAgIGJvb2wgbmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBuZWdhdGUp
CisgICAgeworICAgICAgICBBU1NFUlQobmVnYXRlLm9wID09IEFyaXRoTmVnYXRlKTsKKyAgICAg
ICAgcmV0dXJuIGF0KG5lZ2F0ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpICYm
IG5lZ2F0ZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCk7CisgICAgfQorICAgIAogICAgIGJvb2wgYWRk
U2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIoYXQobm9kZUluZGV4KSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTA5MDA4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCw2
ICsyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzCiAgICAg
LyogTm9kZXMgZm9yIGFyaXRobWV0aWMgb3BlcmF0aW9ucy4gKi9cCiAgICAgbWFjcm8oQXJpdGhB
ZGQsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aFN1YiwgTm9kZVJlc3VsdE51
bWJlcikgXAorICAgIG1hY3JvKEFyaXRoTmVnYXRlLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAg
bWFjcm8oQXJpdGhNdWwsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aERpdiwg
Tm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoTW9kLCBOb2RlUmVzdWx0TnVtYmVy
KSBcCkBAIC01MzEsNiArNTMyLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFVJbnQz
MlRvTnVtYmVyOgogICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjYXNlIEFyaXRoU3Vi
OgorICAgICAgICBjYXNlIEFyaXRoTmVnYXRlOgogICAgICAgICBjYXNlIEFyaXRoTXVsOgogICAg
ICAgICBjYXNlIEFyaXRoQWJzOgogICAgICAgICBjYXNlIEFyaXRoTWluOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNiArMjA5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhOZWdhdGU6CisgICAgICAgICAgICBp
ZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQorICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoTXVsOgogICAgICAgICBjYXNl
IEFyaXRoTWluOgogICAgICAgICBjYXNlIEFyaXRoTWF4OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lv
biAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODg1LDYgKzE4ODUsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBjb21waWxlQXJpdGhTdWIo
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBBcml0aE5lZ2F0ZToKKyAgICAgICAg
Y29tcGlsZUFyaXRoTmVnYXRlKG5vZGUpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgQXJp
dGhNdWw6CiAgICAgICAgIGNvbXBpbGVBcml0aE11bChub2RlKTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NTksNiArMTk1OSwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGNvbXBp
bGVBcml0aFN1Yihub2RlKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEFyaXRoTmVnYXRl
OgorICAgICAgICBjb21waWxlQXJpdGhOZWdhdGUobm9kZSk7CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBBcml0aE11bDoKICAgICAgICAgY29tcGlsZUFyaXRoTXVsKG5vZGUpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Myw2ICsyMzYz
LDM0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2QKICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZShOb2RlJiBub2RlKQoreworICAgIGlmIChtX2pp
dC5ncmFwaCgpLm5lZ2F0ZVNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpIHsKKyAgICAgICAg
U3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIG1faml0Lm1vdmUob3AxLmdw
cigpLCByZXN1bHQuZ3ByKCkpOworCisgICAgICAgIGlmIChub2RlQ2FuVHJ1bmNhdGVJbnRlZ2Vy
KG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCisgICAgICAgICAgICBtX2ppdC5uZWczMihyZXN1bHQu
Z3ByKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoTmVnMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok92ZXJmbG93LCByZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgIGlmICghbm9kZUNh
bklnbm9yZU5lZ2F0aXZlWmVybyhub2RlLmFyaXRoTm9kZUZsYWdzKCkpKQorICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJ
bmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcyk7CisKKyAgICBtX2ppdC5uZWdhdGVEb3VibGUob3AxLmZwcigpLCByZXN1bHQu
ZnByKCkpOworCisgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhNdWwoTm9kZSYgbm9kZSkK
IHsKICAgICBpZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihhdChub2RlLmNoaWxkMSgp
KSwgYXQobm9kZS5jaGlsZDIoKSkpICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxMDkwMDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MTEsNiArMTcxMSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBw
cm9wZXJ0eSwgTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUFkZChOb2RlJik7CiAgICAgdm9pZCBj
b21waWxlQXJpdGhTdWIoTm9kZSYpOworICAgIHZvaWQgY29tcGlsZUFyaXRoTmVnYXRlKE5vZGUm
KTsKICAgICB2b2lkIGNvbXBpbGVBcml0aE11bChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlQXJp
dGhNb2QoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVNvZnRNb2R1bG8oTm9kZSYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA5MDA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsOSArMjM1LDYg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfVU5B
UllfT1Aob3BfaXNfb2JqZWN0KQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfc3RyaW5n
KQogICAgICAgICBERUZJTkVfVU5BUllfT1Aob3BfaXNfdW5kZWZpbmVkKQotI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIERFRklORV9VTkFSWV9PUChvcF9uZWdhdGUpCi0jZW5kaWYKICAgICAg
ICAgREVGSU5FX1VOQVJZX09QKG9wX3R5cGVvZikKIAogICAgICAgICBERUZJTkVfT1Aob3BfYWRk
KQpAQCAtMzAxLDkgKzI5OCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX21vZCkKICAgICAgICAgREVGSU5FX09QKG9wX21vdikKICAg
ICAgICAgREVGSU5FX09QKG9wX211bCkKLSNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmVnYXRlKQotI2VuZGlmCiAgICAgICAgIERFRklORV9PUChvcF9uZXEpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXFfbnVsbCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19h
cnJheSkKQEAgLTQ3Myw5ICs0NjgsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbWV0aG9kX2NoZWNrKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfbW9kKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfbXVsKQotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9uZWdhdGUpCi0jZW5kaWYKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25lcSkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX25ld19hcnJheSkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX25ld19vYmplY3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEFyaXRobWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHJldmlzaW9uIDEwOTAwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2
ICsxOTIsNDIgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2puZ3JlYXRlcmVxKEluc3RydQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKIAordm9pZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgdW5zaWduZWQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBzcmMgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmMsIHJlZ1Qw
KTsKKworICAgIEp1bXAgc3JjTm90SW50ID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIo
cmVnVDApOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCwgVHJ1c3Rl
ZEltbTMyKDB4N2ZmZmZmZmYpKSk7CisgICAgbmVnMzIocmVnVDApOworICAgIGVtaXRGYXN0QXJp
dGhSZVRhZ0ltbWVkaWF0ZShyZWdUMCwgcmVnVDApOworCisgICAgSnVtcCBlbmQgPSBqdW1wKCk7
CisKKyAgICBzcmNOb3RJbnQubGluayh0aGlzKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVOdW1iZXIocmVnVDApOworCisgICAgbW92ZShUcnVzdGVkSW1tUHRyKHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDB4ODAwMDAwMDAwMDAwMDAwMHVsbCkpLCByZWdUMSk7CisgICAgeG9y
UHRyKHJlZ1QxLCByZWdUMCk7CisKKyAgICBlbmQubGluayh0aGlzKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0U2xvd19vcF9uZWdhdGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlcikKK3sKKyAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworCisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyAweDdmZmZmZmZmIGNoZWNr
CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb3VibGUgY2hlY2sKKworICAgIEpJVFN0dWJD
YWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9uZWdhdGUpOworICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KHJlZ1QxLCByZWdUMCk7CisgICAgc3R1YkNhbGwuY2FsbChkc3QpOworfQorCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwo=
</data>
<flag name="review"
          id="131685"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>