<?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>172306</bug_id>
          
          <creation_ts>2017-05-18 12:51:41 -0700</creation_ts>
          <short_desc>B3::Value::effects() says that having a fence range implies the fence bit, but on x86_64 we lower loadAcq/storeRel to load/store so the store-before-load fence bit orderings won&apos;t be honored</short_desc>
          <delta_ts>2017-05-19 08:49:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>buildbot</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1310212</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 12:51:41 -0700</bug_when>
    <thetext>As the title says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310216</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 12:52:44 -0700</bug_when>
    <thetext>I think that this means that MacroAssembler::storeRel on x86 should emit a xchg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310218</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 12:56:55 -0700</bug_when>
    <thetext>Seems like MacroAssembler even having methods like loadAcq and storeRel is super confusing.

B3::LowerToAir should be making a deliberate choice about what acq/rel mean for x86, and I think that the only right interpretation is that rel means xchg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310227</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-18 13:21:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/32279715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310311</commentid>
    <comment_count>4</comment_count>
      <attachid>310565</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 15:51:10 -0700</bug_when>
    <thetext>Created attachment 310565
possible patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310343</commentid>
    <comment_count>5</comment_count>
      <attachid>310575</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 16:48:45 -0700</bug_when>
    <thetext>Created attachment 310575
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310357</commentid>
    <comment_count>6</comment_count>
      <attachid>310578</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-18 17:29:35 -0700</bug_when>
    <thetext>Created attachment 310578
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310408</commentid>
    <comment_count>7</comment_count>
      <attachid>310578</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-05-18 19:58:02 -0700</bug_when>
    <thetext>Comment on attachment 310578
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310614</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-05-19 08:49:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/217127/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310565</attachid>
            <date>2017-05-18 15:51:10 -0700</date>
            <delta_ts>2017-05-18 16:48:45 -0700</delta_ts>
            <desc>possible patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23264</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzAxMyw2ICszMDEzLDM2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgeGNoZzgoUmVnaXN0ZXJJRCByZWcsIEFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgeGNoZzgo
UmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueGNoZ2Jfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNz
LmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB4Y2hnMTYoUmVn
aXN0ZXJJRCByZWcsIEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVy
LnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgeGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXggYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGd3X3JtKHJlZywgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgeGNoZzMyKFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGczMihSZWdpc3RlcklEIHJlZywgQmFz
ZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnbF9ybShyZWcs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUpOworICAgIH0KKyAgICAKICAgICAvLyBXZSB0YWtlIG1lbW9yeUZlbmNlIHRvIG1lYW4gYWNx
cmVsLiBUaGlzIGhhcyBhY3FyZWwgc2VtYW50aWNzIG9uIHg4Ni4KICAgICB2b2lkIG1lbW9yeUZl
bmNlKCkKICAgICB7CkBAIC0zNzM4LDExNiArMzc2OCw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRy
ZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBsb2FkQWNx
OChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDgoc3Jj
LCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxOChCYXNlSW5kZXggc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkOChzcmMsIGRlc3QpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDhTaWduZWRFeHRlbmRUbzMyKHNyYywg
ZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgbG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ4U2lnbmVk
RXh0ZW5kVG8zMihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGxvYWRBY3ExNihB
ZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAgICAgbG9hZDE2KHNyYywg
ZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgbG9hZEFjcTE2KEJhc2VJbmRleCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIGxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNlNpZ25lZEV4dGVuZFRvMzIoc3Jj
LCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMy
KEJhc2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNlNp
Z25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNx
MzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQzMihz
cmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIGxvYWRBY3EzMihCYXNlSW5kZXggc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVz
dCkKLSAgICB7Ci0gICAgICAgIHN0b3JlOChzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIHN0b3JlUmVsOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAg
ICAgICBzdG9yZTgoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDgo
VHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmU4KGlt
bSwgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmU4KGltbSwgZGVzdCk7Ci0g
ICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWwxNihSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBk
ZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIHN0b3JlUmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsK
LSAgICAgICAgc3RvcmUxNihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3Jl
UmVsMTYoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgc3Rv
cmUxNihpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3JlUmVsMTYoVHJ1c3Rl
ZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTE2KGltbSwg
ZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWwzMihSZWdpc3RlcklEIHNyYywg
QWRkcmVzcyBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOwotICAgIH0K
LSAgICAKLSAgICB2b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEJhc2VJbmRleCBkZXN0
KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIHN0b3JlUmVsMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBkZXN0KQotICAgIHsKLSAg
ICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3JlUmVs
MzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBzdG9y
ZTMyKGltbSwgZGVzdCk7Ci0gICAgfQotICAgIAogICAgIC8vIFdlIHRha2UgdGhpcyB0byBtZWFu
IHRoYXQgaXQgcHJldmVudHMgbW90aW9uIG9mIG5vcm1hbCBzdG9yZXMuIFNvLCBpdCdzIGEgbm8t
b3Agb24geDg2LgogICAgIHZvaWQgc3RvcmVGZW5jZSgpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQu
aAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ3LDYgKzE0NDcsMTYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5j
aFRlc3Q4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBtYXNrOCk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgeGNoZzY0KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGc2NChSZWdpc3RlcklEIHJl
ZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9y
bShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUpOworICAgIH0KKyAgICAKICAgICB2b2lkIGF0b21pY1N0cm9uZ0NBUzY0KFN0YXR1
c0NvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGV4cGVjdGVkQW5kUmVzdWx0LCBSZWdpc3RlcklE
IG5ld1ZhbHVlLCBBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgcmVzdWx0KQogICAgIHsKICAg
ICAgICAgYXRvbWljU3Ryb25nQ0FTKGNvbmQsIGV4cGVjdGVkQW5kUmVzdWx0LCByZXN1bHQsIGFk
ZHJlc3MsIFsmXSB7IG1fYXNzZW1ibGVyLmNtcHhjaGdxX3JtKG5ld1ZhbHVlLCBhZGRyZXNzLm9m
ZnNldCwgYWRkcmVzcy5iYXNlKTsgfSk7CkBAIC0xNjg1LDM2ICsxNjk1LDYgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci54Y2hncV9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGxvYWRBY3E2NChBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAgICAg
ICAgbG9hZDY0KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgbG9hZEFjcTY0KEJh
c2VJbmRleCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ2NChzcmMs
IGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3JlUmVsNjQoUmVnaXN0ZXJJRCBzcmMs
IEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKLSAgICB9
Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVz
dCkKLSAgICB7Ci0gICAgICAgIHN0b3JlNjQoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBzdG9yZVJlbDY0KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0g
ICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJl
bDY0KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3Rv
cmU2NChpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQog
ICAgIHZvaWQgbG9hZEZyb21UTFM2NCh1aW50MzJfdCBvZmZzZXQsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCShy
ZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEluc3QgaW5zdChBcmdzJiYuLi4gYXJncykKICAgICAgICAgewogICAgICAgICAgICAgSW5zdCBy
ZXN1bHQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgICAgIHJlc3VsdC5r
aW5kLnRyYXBzIHw9IG1fdHJhcHM7CisgICAgICAgICAgICByZXN1bHQua2luZC5lZmZlY3RzIHw9
IG1fdHJhcHM7CiAgICAgICAgICAgICBtX3dhc1dyYXBwZWQgPSB0cnVlOwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTY4LDcgKzU2OCw3IEBAIHByaXZhdGU6CiAg
ICAgSW5zdCB0cmFwcGluZ0luc3QoYm9vbCB0cmFwcywgQXJncyYmLi4uIGFyZ3MpCiAgICAgewog
ICAgICAgICBJbnN0IHJlc3VsdChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAg
ICByZXN1bHQua2luZC50cmFwcyB8PSB0cmFwczsKKyAgICAgICAgcmVzdWx0LmtpbmQuZWZmZWN0
cyB8PSB0cmFwczsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC0xMDE3
LDI5ICsxMDE3LDI4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAot
ICAgIEluc3QgY3JlYXRlU3RvcmUoQWlyOjpPcGNvZGUgbW92ZSwgVmFsdWUqIHZhbHVlLCBjb25z
dCBBcmcmIGRlc3QpCisgICAgSW5zdCBjcmVhdGVTdG9yZShBaXI6OktpbmQgbW92ZSwgVmFsdWUq
IHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoaW1tKHZhbHVlKSAm
JiBpc1ZhbGlkRm9ybShtb3ZlLCBBcmc6OkltbSwgZGVzdC5raW5kKCkpKQorICAgICAgICBpZiAo
aW1tKHZhbHVlKSAmJiBpc1ZhbGlkRm9ybShtb3ZlLm9wY29kZSwgQXJnOjpJbW0sIGRlc3Qua2lu
ZCgpKSkKICAgICAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIGltbSh2YWx1ZSks
IGRlc3QpOwogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFsdWUsIHRtcCh2YWx1ZSks
IGRlc3QpOwogICAgIH0KICAgICAKLSAgICBBaXI6Ok9wY29kZSBzdG9yZU9wY29kZShXaWR0aCB3
aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgQWlyOjpPcGNvZGUgc3RvcmVPcGNv
ZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CiAgICAgICAgIHN3aXRjaCAod2lkdGgp
IHsKICAgICAgICAgY2FzZSBXaWR0aDg6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChiYW5r
ID09IEdQKTsKLSAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWw4IDogQWlyOjpT
dG9yZTg7CisgICAgICAgICAgICByZXR1cm4gQWlyOjpTdG9yZTg7CiAgICAgICAgIGNhc2UgV2lk
dGgxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0gR1ApOwotICAgICAgICAg
ICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9yZTE2OworICAgICAgICAg
ICAgcmV0dXJuIEFpcjo6U3RvcmUxNjsKICAgICAgICAgY2FzZSBXaWR0aDMyOgogICAgICAgICAg
ICAgc3dpdGNoIChiYW5rKSB7CiAgICAgICAgICAgICBjYXNlIEdQOgotICAgICAgICAgICAgICAg
IHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTW92ZTMyOwogICAgICAgICAgICAgY2FzZSBGUDoKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghcmVsZWFzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE1vdmVGbG9hdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA0Nyw5ICsxMDQ2LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRCaXQoKSk7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGJhbmspIHsKICAgICAgICAgICAgIGNhc2UgR1A6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTW92ZTsKICAgICAgICAgICAgIGNhc2UgRlA6Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlbGVhc2UpOwogICAgICAgICAgICAgICAgIHJldHVybiBNb3ZlRG91YmxlOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDU3LDI1ICsxMDU1LDMzIEBA
IHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQog
ICAgIAotICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2YWx1ZSkKKyAgICB2b2lk
IGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQogICAgIHsKICAgICAg
ICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKTsKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwotICAgICAgICByZXR1cm4gc3Rv
cmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NXaWR0aCgpLCBtZW1vcnktPmFjY2Vzc0JhbmsoKSwgbWVt
b3J5LT5oYXNGZW5jZSgpKTsKLSAgICB9CiAKLSAgICBJbnN0IGNyZWF0ZVN0b3JlKFZhbHVlKiB2
YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQotICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgbW92ZU9w
Y29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVN0b3JlKG1v
dmVPcGNvZGUsIHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CisgICAgICAgIEFpcjo6S2luZCBraW5k
OworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAga2luZCA9IE9QQ09ERV9GT1Jf
V0lEVEgoWGNoZywgbWVtb3J5LT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAgICAgICAgICAgICBraW5k
LmVmZmVjdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIFRtcCBzd2FwVG1wID0gbV9jb2RlLm5l
d1RtcChHUCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZShtZW1v
cnktPnR5cGUoKSksIHRtcChtZW1vcnktPmNoaWxkKDApKSwgc3dhcFRtcCk7CisgICAgICAgICAg
ICAgICAgYXBwZW5kKGtpbmQsIHN3YXBUbXAsIGRlc3QpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAga2luZCA9IE9QQ09E
RV9GT1JfV0lEVEgoU3RvcmVSZWwsIG1lbW9yeS0+YWNjZXNzV2lkdGgoKSk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAga2luZCA9IHN0b3JlT3Bjb2RlKG1lbW9yeS0+YWNjZXNzV2lkdGgo
KSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCkpOworICAgICAgICAKKyAgICAgICAga2luZC5lZmZlY3Rz
IHw9IG1lbW9yeS0+dHJhcHMoKTsKKyAgICAgICAgCisgICAgICAgIGFwcGVuZChjcmVhdGVTdG9y
ZShraW5kLCBtZW1vcnktPmNoaWxkKDApLCBkZXN0KSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZFN0b3JlKEFyZ3MmJi4uLiBhcmdzKQot
ICAgIHsKLSAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShz
dGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7Ci0gICAgfQotICAgIAogICAgIEFpcjo6T3Bj
b2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkg
ewpAQCAtMTE1MSwxNSArMTE1NywxNSBAQCBwcml2YXRlOgogI2VuZGlmIC8vIEVOQUJMRShNQVNN
X1BST0JFKQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHZvaWQg
YXBwZW5kKEFpcjo6T3Bjb2RlIG9wY29kZSwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAg
IHZvaWQgYXBwZW5kKEFpcjo6S2luZCBraW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAg
ICAgewotICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoSW5zdChvcGNvZGUsIG1fdmFsdWUs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKKyAgICAgICAgbV9pbnN0
cy5sYXN0KCkuYXBwZW5kKEluc3Qoa2luZCwgbV92YWx1ZSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50
cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmd1bWVudHM+Ci0gICAgdm9pZCBhcHBlbmRUcmFwcGluZyhBaXI6Ok9wY29kZSBvcGNvZGUs
IEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB2b2lkIGFwcGVuZFRyYXBwaW5nKEFpcjo6
S2luZCBraW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBtX2lu
c3RzLmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOworICAgICAgICBtX2luc3Rz
Lmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIHN0ZDo6
Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsKICAgICB9CiAgICAgCiAgICAgdm9p
ZCBhcHBlbmQoSW5zdCYmIGluc3QpCkBAIC0xMjU0LDcgKzEyNjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWYWx1ZVJlcDo6U3RhY2tBcmd1
bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNhbGxBcmcodmFsdWUucmVwKCkub2Zm
c2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVuZFN0b3JlKG1vdmVGb3JUeXBlKHZh
bHVlLnZhbHVlKCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCksIGFyZyk7CisgICAgICAgICAgICAg
ICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVhdGVTdG9yZShtb3ZlRm9yVHlwZSh2
YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgpLCBhcmcpKSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDE0LDQ2ICsyNDIwLDM4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7CiAgICAgICAgICAgICBNZW1vcnlW
YWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCk7Ci0gICAgICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7Ci0gICAgICAgICAgICBpZiAobWVtb3J5LT5o
YXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChtZW1vcnktPnR5cGUoKSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9
IExvYWRBY3EzMjsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBJbnQ2NDoKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gTG9hZEFjcTY0OwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZShtZW1vcnktPnR5cGUoKSk7Ci0gICAg
ICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRk
cihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6OktpbmQga2luZCA9
IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAgICAgICAgIGlmIChtZW1vcnktPmhh
c0ZlbmNlKCkpCisgICAgICAgICAgICAgICAga2luZC5lZmZlY3RzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwga2luZCwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4UzogewotICAgICAgICAgICAgQWlyOjpPcGNv
ZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCkgPyBMb2Fk
QWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4dGVuZFRvMzI7Ci0gICAgICAgICAg
ICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3Zh
bHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6OktpbmQga2luZCA9IExvYWQ4
U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGtpbmQuZWZmZWN0cyA9IG1fdmFsdWUtPmFz
PE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpOworICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5n
SW5zdChtX3ZhbHVlLCBraW5kLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgTG9hZDha
OiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9hZDg7Ci0gICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwg
dG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6OktpbmQga2luZCA9IExvYWQ4OworICAg
ICAgICAgICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0Zl
bmNlKCk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1f
dmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZTOiB7Ci0gICAgICAgICAgICBBaXI6
Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/
IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOwotICAg
ICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBvcGNvZGUsIG1fdmFsdWUsIGFk
ZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAgICAgICAgQWlyOjpLaW5kIGtpbmQg
PSBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAgICAga2luZC5lZmZlY3RzID0gbV92
YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBlbmQo
dHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcCht
X3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5h
czxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNiA6IExvYWQxNjsKLSAgICAg
ICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwgb3Bjb2RlLCBtX3ZhbHVlLCBhZGRy
KG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAgICAgIEFpcjo6S2luZCBraW5kID0g
TG9hZDE2OworICAgICAgICAgICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5Myw2ICs1NzkzLDggQEAg
dm9pZCB0ZXN0U3RvcmVSZWxBZGRMb2FkQWNxMzIoaW50IGFtb3VudAogICAgICAgICBjaGVja1Vz
ZXNJbnN0cnVjdGlvbigqY29kZSwgImxkYSIpOwogICAgICAgICBjaGVja1VzZXNJbnN0cnVjdGlv
bigqY29kZSwgInN0bCIpOwogICAgIH0KKyAgICBpZiAoaXNYODYoKSkKKyAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJ4Y2hnIik7CiAgICAgQ0hFQ0soIWludm9rZTxpbnQ+KCpj
b2RlLCBhbW91bnQpKTsKICAgICBDSEVDSyhzbG90ID09IDM3ICsgYW1vdW50KTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmNwcAkocmV2aXNpb24gMjE3MDY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsOCArMzcsOCBAQCB2b2lkIEtpbmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKICAgICBvdXQucHJpbnQob3Bjb2RlKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29t
bWEoIiwgIiwgIjwiKTsKLSAgICBpZiAodHJhcHMpCi0gICAgICAgIG91dC5wcmludChjb21tYSwg
IlRyYXBzIik7CisgICAgaWYgKGVmZmVjdHMpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkVm
ZmVjdHMiKTsKICAgICBpZiAoY29tbWEuZGlkUHJpbnQoKSkKICAgICAgICAgb3V0LnByaW50KCI+
Iik7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpcktpbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpcktpbmQuaAkocmV2aXNp
b24gMjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZQogc3RydWN0IEtpbmQgewogICAgIEtpbmQoT3Bjb2RlIG9wY29kZSkKICAg
ICAgICAgOiBvcGNvZGUob3Bjb2RlKQotICAgICAgICAsIHRyYXBzKGZhbHNlKQorICAgICAgICAs
IGVmZmVjdHMoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKQEAgLTU0LDcgKzU0LDcgQEAgc3Ry
dWN0IEtpbmQgewogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBvcGNvZGUgPT0gb3RoZXIub3Bjb2RlCi0gICAgICAgICAg
ICAmJiB0cmFwcyA9PSBvdGhlci50cmFwczsKKyAgICAgICAgICAgICYmIGVmZmVjdHMgPT0gb3Ro
ZXIuZWZmZWN0czsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtpbmQm
IG90aGVyKSBjb25zdApAQCAtNjQsNyArNjQsNyBAQCBzdHJ1Y3QgS2luZCB7CiAgICAgCiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG9wY29kZSkgKyAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyYXBzKSA8PCAxNik7
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3Bjb2RlKSArIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZWZmZWN0cykgPDwgMTYpOwogICAgIH0KICAgICAKICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKQEAgLTc2LDE3ICs3NiwxMSBAQCBzdHJ1Y3QgS2luZCB7
CiAgICAgCiAgICAgT3Bjb2RlIG9wY29kZTsKICAgICAKLSAgICAvLyBUaGlzIGlzIGFuIG9wY29k
ZS1hZ25vc3RpYyBmbGFnIHRoYXQgaW5kaWNhdGVzIHRoYXQgd2UgZXhwZWN0IHRoYXQgdGhpcyBp
bnN0cnVjdGlvbiB3aWxsCi0gICAgLy8gdHJhcC4gVGhpcyBjYXVzZXMgdGhlIGNvbXBpbGVyIHRv
IGFzc3VtZSB0aGF0IHRoaXMgc2lkZS1leGl0cyBhbmQgdGhlcmVmb3JlIGhhcyBub24tY29udHJv
bAotICAgIC8vIG5vbi1hcmcgZWZmZWN0cy4gVGhpcyBhbHNvIGNhdXNlcyB0aGUgY29tcGlsZXIg
dG8gdGVsbCB5b3UgYWJvdXQgYWxsIG9mIHRoZXNlIGluc3RydWN0aW9ucy4KLSAgICAvLyBOb3Rl
IHRoYXQgdGhpcyBpcyBqdXN0IG9uZSBvZiBzZXZlcmFsIHdheXMgb2Ygc3VwcG9ydGluZyB0cmFw
cGluZyBpbiBBaXIsIGFuZCBpdCdzIHRoZSBsZXNzCi0gICAgLy8gcHJlY2lzZSB2YXJpYW50IGJl
Y2F1c2UgaXQncyBvcmlnaW4tYmFzZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBhbiBpbnN0cnVjdGlv
biB3YXMgZnVzZWQgb3V0Ci0gICAgLy8gb2YgQjMgdmFsdWVzIHRoYXQgaGFkIGRpZmZlcmVudCBv
cmlnaW5zLCB0aGVuIHRoZSBvcmlnaW4gYXQgd2hpY2ggeW91J2xsIGFwcGVhciB0byB0cmFwCi0g
ICAgLy8gd2lsbCBiZSBzb21ld2hhdCByYW5kb20uIFRoZSB1cHNpZGUgb2YgdGhpcyBhcHByb2Fj
aCBpcyB0aGF0IGl0IGltcG9zZXMgYnkgZmFyIHRoZSBsZWFzdAotICAgIC8vIG92ZXJoZWFkIG9u
IHRoZSBjb21waWxlci4KLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNvbXBsZXRlbHkgd29yay4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNjg5Ci0g
ICAgYm9vbCB0cmFwcyA6IDE7CisgICAgLy8gVGhpcyBpcyBhbiBvcGNvZGUtYWdub3N0aWMgZmxh
ZyB0aGF0IGluZGljYXRlcyB0aGF0IHdlIGV4cGVjdCB0aGF0IHRoaXMgaW5zdHJ1Y3Rpb24gd2ls
bCBkbworICAgIC8vIGFueSBvZiB0aGUgZm9sbG93aW5nOgorICAgIC8vIC0gVHJhcC4KKyAgICAv
LyAtIFBlcmZvcm0gc29tZSBub24tYXJnIG5vbi1jb250cm9sIGVmZmVjdC4KKyAgICBib29sIGVm
ZmVjdHMgOiAxOwogfTsKIAogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJl
Z0FsbG9jLmNwcAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsOCAr
MjI3LDggQEAgdm9pZCBsb3dlckFmdGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICAgICAgaW5zdEluZGV4LCBlbWl0U2h1ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBm
cFNjcmF0Y2gsIGluc3Qub3JpZ2luKSk7CiAKICAgICAgICAgICAgICAgICBpbnN0ID0gYnVpbGRD
Q2FsbChjb2RlLCBpbnN0Lm9yaWdpbiwgZGVzdGluYXRpb25zKTsKLSAgICAgICAgICAgICAgICBp
ZiAob2xkS2luZC50cmFwcykKLSAgICAgICAgICAgICAgICAgICAgaW5zdC5raW5kLnRyYXBzID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAob2xkS2luZC5lZmZlY3RzKQorICAgICAgICAgICAg
ICAgICAgICBpbnN0LmtpbmQuZWZmZWN0cyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyBO
b3cgd2UgbmVlZCB0byBlbWl0IGNvZGUgdG8gcmVzdG9yZSByZWdpc3RlcnMuCiAgICAgICAgICAg
ICAgICAgcGFpcnMucmVzaXplKDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJMb3dlck1hY3Jvcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5jcHAJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw4ICs5NSw4IEBAIHZvaWQgbG93ZXJNYWNyb3MoQ29kZSYgY29kZSkKICAgICAgICAgICAg
ICAgICBBcmcgcmVzdWx0RHN0ID0gdmFsdWUtPnR5cGUoKSA9PSBWb2lkID8gQXJnKCkgOiBpbnN0
LmFyZ3NbMV07CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaW5zdCA9IGJ1aWxk
Q0NhbGwoY29kZSwgaW5zdC5vcmlnaW4sIGRlc3RpbmF0aW9ucyk7Ci0gICAgICAgICAgICAgICAg
aWYgKG9sZEtpbmQudHJhcHMpCi0gICAgICAgICAgICAgICAgICAgIGluc3Qua2luZC50cmFwcyA9
IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG9sZEtpbmQuZWZmZWN0cykKKyAgICAgICAgICAg
ICAgICAgICAgaW5zdC5raW5kLmVmZmVjdHMgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgVG1w
IHJlc3VsdCA9IGNDYWxsUmVzdWx0KHZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN3
aXRjaCAodmFsdWUtPnR5cGUoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC03
MjMsOSArNzIzLDcgQEAgTG9hZDggVTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJ
bmRleCwgVG1wCiAKLUxvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCi0gICAgeDg2OiBB
ZGRyLCBUbXAKLSAgICB4ODY6IEluZGV4LCBUbXAKK2FybTogTG9hZEFjcTggVTpHOjgsIFpEOkc6
MzIgL2VmZmVjdHMKICAgICBTaW1wbGVBZGRyLCBUbXAKIAogU3RvcmU4IFU6Rzo4LCBEOkc6OApA
QCAtNzM0LDM4ICs3MzIsMjggQEAgU3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIHg4NjogSW1tLCBJ
bmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKLVN0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2VmZmVj
dHMKLSAgICB4ODY6IFRtcCwgSW5kZXgKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4NjogSW1t
LCBJbmRleAotICAgIHg4NjogSW1tLCBBZGRyCithcm06IFN0b3JlUmVsOCBVOkc6OCwgRDpHOjgg
L2VmZmVjdHMKICAgICBUbXAsIFNpbXBsZUFkZHIKIAogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6
Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCi1Mb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKLSAgICB4ODY6IEFkZHIsIFRt
cAotICAgIHg4NjogSW5kZXgsIFRtcAorYXJtOiBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpH
OjgsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1wbGVBZGRyLCBUbXAKIAogTG9hZDE2IFU6Rzox
NiwgWkQ6RzozMgogICAgIEFkZHIsIFRtcAogICAgIEluZGV4LCBUbXAKIAotTG9hZEFjcTE2IFU6
RzoxNiwgWkQ6RzozMiAvZWZmZWN0cwotICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRl
eCwgVG1wCithcm06IExvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1w
bGVBZGRyLCBUbXAKIAogTG9hZDE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAg
ICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKLUxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIg
VTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCi0gICAgeDg2OiBBZGRyLCBUbXAKLSAgICB4ODY6IElu
ZGV4LCBUbXAKK2FybTogTG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIg
L2VmZmVjdHMKICAgICBTaW1wbGVBZGRyLCBUbXAKIAogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgpA
QCAtNzc0LDM3ICs3NjIsMzcgQEAgU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIHg4NjogSW1t
LCBJbmRleAogICAgIHg4NjogSW1tLCBBZGRyCiAKLVN0b3JlUmVsMTYgVTpHOjE2LCBEOkc6MTYg
L2VmZmVjdHMKLSAgICB4ODY6IFRtcCwgSW5kZXgKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4
NjogSW1tLCBJbmRleAotICAgIHg4NjogSW1tLCBBZGRyCithcm06IFN0b3JlUmVsMTYgVTpHOjE2
LCBEOkc6MTYgL2VmZmVjdHMKICAgICBUbXAsIFNpbXBsZUFkZHIKIAotTG9hZEFjcTMyIFU6Rzoz
MiwgWkQ6RzozMiAvZWZmZWN0cwotICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRleCwg
VG1wCithcm06IExvYWRBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1wbGVB
ZGRyLCBUbXAKIAotU3RvcmVSZWwzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKLSAgICB4ODY6
IFRtcCwgQWRkcgotICAgIHg4NjogVG1wLCBJbmRleAotICAgIHg4NjogSW1tLCBBZGRyCi0gICAg
eDg2OiBJbW0sIEluZGV4Cithcm06IFN0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3Rz
CiAgICAgVG1wLCBTaW1wbGVBZGRyCiAKLTY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9l
ZmZlY3RzCi0gICAgeDg2OiBBZGRyLCBUbXAKLSAgICB4ODY6IEluZGV4LCBUbXAKK2FybTY0OiBM
b2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCiAgICAgU2ltcGxlQWRkciwgVG1wCiAK
LTY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cwotICAgIHg4NjogVG1wLCBB
ZGRyCi0gICAgeDg2OiBUbXAsIEluZGV4Ci0gICAgeDg2OiBJbW0sIEFkZHIKLSAgICB4ODY6IElt
bSwgSW5kZXgKK2FybTY0OiBTdG9yZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cwogICAg
IFRtcCwgU2ltcGxlQWRkcgogCit4ODY6IFhjaGc4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisg
ICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IFhjaGcxNiBVRDpHOjE2LCBVRDpH
OjE2IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IFhjaGcz
MiBVRDpHOjMyLCBVRDpHOjMyIC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRl
eAorCit4ODZfNjQ6IFhjaGc2NCBVRDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBB
ZGRyCisgICAgVG1wLCBJbmRleAorCiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KICMgRklY
TUU6IFRoaXMgZm9ybXVsYXRpb24gbWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90
IGJlIHB1dCBpbiBlYXgsIGV2ZW4gdGhvdWdoIGFsbCB1c2VycwogIyBvZiB0aGlzIHdvdWxkIGJl
IE9LIHdpdGggdGhhdC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFs
aWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEwMSw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBTaHVmZmxlOgogICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBoYW5kbGUgdHJhcHBp
bmcgc2h1ZmZsZXMgYmVjYXVzZSBvZiBob3cgd2UgbG93ZXIgdGhlbS4gVGhhdCBjb3VsZAotICAg
ICAgICAgICAgICAgICAgICAvLyBiZSBmaXhlZCB0aG91Z2guCi0gICAgICAgICAgICAgICAgICAg
IFZBTElEQVRFKCFpbnN0LmtpbmQudHJhcHMsICgiQXQgIiwgaW5zdCwgIiBpbiAiLCAqYmxvY2sp
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gYmUgZml4ZWQgdGhvdWdoLiBEaXR0byBmb3Igc2h1
ZmZsZXMgdGhhdCB3b3VsZCBkbyBmZW5jZXMsIHdoaWNoIGlzIHRoZSBvdGhlcgorICAgICAgICAg
ICAgICAgICAgICAvLyB1c2Ugb2YgdGhpcyBiaXQuCisgICAgICAgICAgICAgICAgICAgIFZBTElE
QVRFKCFpbnN0LmtpbmQuZWZmZWN0cywgKCJBdCAiLCBpbnN0LCAiIGluICIsICpibG9jaykpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5
KQpAQCAtMTEyNiw3ICsxMTI2LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAg
CiAgICAgb3V0cC5wdXRzICJib29sIEluc3Q6Omhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKCki
CiAgICAgb3V0cC5wdXRzICJ7IgotICAgIG91dHAucHV0cyAiaWYgKGtpbmQudHJhcHMpIgorICAg
IG91dHAucHV0cyAiaWYgKGtpbmQuZWZmZWN0cykiCiAgICAgb3V0cC5wdXRzICJyZXR1cm4gdHJ1
ZTsiCiAgICAgb3V0cC5wdXRzICJzd2l0Y2ggKGtpbmQub3Bjb2RlKSB7IgogICAgIGZvdW5kVHJ1
ZSA9IGZhbHNlCkBAIC0xMTU0LDcgKzExNTQsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIp
IHsKICAgICAKICAgICBvdXRwLnB1dHMgImJvb2wgSW5zdDo6aGFzTm9uQXJnRWZmZWN0cygpIgog
ICAgIG91dHAucHV0cyAieyIKLSAgICBvdXRwLnB1dHMgImlmIChraW5kLnRyYXBzKSIKKyAgICBv
dXRwLnB1dHMgImlmIChraW5kLmVmZmVjdHMpIgogICAgIG91dHAucHV0cyAicmV0dXJuIHRydWU7
IgogICAgIG91dHAucHV0cyAic3dpdGNoIChraW5kLm9wY29kZSkgeyIKICAgICBmb3VuZFRydWUg
PSBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310575</attachid>
            <date>2017-05-18 16:48:45 -0700</date>
            <delta_ts>2017-05-18 17:29:35 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33389</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE3MDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE3LTA1LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjM6OlZhbHVlOjplZmZlY3RzKCkgc2F5cyB0aGF0IGhhdmluZyBhIGZlbmNlIHJhbmdlIGltcGxp
ZXMgdGhlIGZlbmNlIGJpdCwgYnV0IG9uIHg4Nl82NCB3ZSBsb3dlciBsb2FkQWNxL3N0b3JlUmVs
IHRvIGxvYWQvc3RvcmUgc28gdGhlIHN0b3JlLWJlZm9yZS1sb2FkIGZlbmNlIGJpdCBvcmRlcmlu
Z3Mgd29uJ3QgYmUgaG9ub3JlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcyMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZXMgQjMgdG8gZW1pdCB4Y2hnIGFuZCBpdHMg
dmFyaWFudHMgZm9yIGZlbmNlZCBzdG9yZXMgb24geDg2LiBUaGlzIGVuc3VyZXMgdGhhdAorICAg
ICAgICBmZW5jZWQgc3RvcmVzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIG90aGVyIGZlbmNl
ZCBpbnN0cnVjdGlvbnMuIFByZXZpb3VzbHksIEIzIGVtaXR0ZWQKKyAgICAgICAgbm9ybWFsIHN0
b3JlIGluc3RydWN0aW9ucyBmb3IgZmVuY2VkIHN0b3Jlcy4gVGhhdCdzIHdyb25nIGJlY2F1c2Ug
dGhlbiB5b3UgZ2V0IHJlb3JkZXJpbmdzCisgICAgICAgIHRoYXQgYXJlIHBvc3NpYmxlIGluIFRT
TyBidXQgaW1wb3NzaWJsZSBpbiBTQy4gRmVuY2VkIGluc3RydWN0aW9ucyBhcmUgc3VwcG9zZWQg
dG8gYmUgU0MKKyAgICAgICAgd2l0aCByZXNwZWN0IGZvciBlYWNoIG90aGVyLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBpbXByZWNpc2UuIElmIHlvdSByZWFsbHkganVzdCB3YW50ZWQgYSBz
dG9yZS1yZWxlYXNlLCB0aGVuIGV2ZXJ5IFg4NiBzdG9yZSBkb2VzIHRoaXMuCisgICAgICAgIEJ1
dCwgaW4gQjMsIGZlbmNlZCBzdG9yZXMgYXJlIEFSTS1zdHlsZSBzdG9yZS1yZWxlYXNlLCBtZWFu
aW5nIHRoYXQgdGhleSBhcmUgZmVuY2VkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBhbGwgb3Ro
ZXIgZmVuY2VzLiBJZiB3ZSBldmVyIGRpZCB3YW50IHRvIHNheSB0aGF0IHNvbWV0aGluZyBpcyBh
IHN0b3JlIHJlbGVhc2UgaW4KKyAgICAgICAgdGhlIHRyYWRpdGlvbmFsIHNlbnNlLCB0aGVuIHdl
J2Qgd2FudCBNZW1vcnlWYWx1ZSB0byBoYXZlIGEgZmVuY2UgZmxhZy4gVGhlbiwgaGF2aW5nIGEg
ZmVuY2UKKyAgICAgICAgcmFuZ2Ugd2l0aG91dCB0aGUgZmVuY2UgZmxhZyB3b3VsZCBtZWFuIHRo
ZSB0cmFkaXRpb25hbCBzdG9yZS1yZWxlYXNlLCB3aGljaCBsb3dlcnMgdG8gYQorICAgICAgICBu
b3JtYWwgc3RvcmUgb24geDg2LiBCdXQgdG8gbXkga25vd2xlZGdlLCB0aGF0IHRyYWRpdGlvbmFs
IHN0b3JlLXJlbGVhc2UgaXMgb25seSB1c2VmdWwgZm9yCisgICAgICAgIHVubG9ja2luZyBzcGlu
bG9ja3MuIFdlIGRvbid0IHVzZSBzcGlubG9ja3MgaW4gSlNDLiBBZGFwdGl2ZSBsb2NrcyByZXF1
aXJlIENBUyBmb3IgdW5sb2NrLAorICAgICAgICBhbmQgQjMgQ0FTIGlzIHBsZW50eSBmYXN0LiBJ
IHRoaW5rIGl0J3MgT0sgdG8gaGF2ZSB0aGlzIHNtYWxsIGltcHJlY2lzaW9uIG9mIGdpdmluZyBj
bGllbnRzCisgICAgICAgIGFuIEFSTS1zdHlsZSBzdG9yZS1yZWxlYXNlIG9uIHg4NiB1c2luZyB4
Y2hnLgorICAgICAgICAKKyAgICAgICAgVGhlIGltcGxpY2F0aW9uIG9mIHRoaXMgY2hhbmdlIGlz
IHRoYXQgdGhlIEZUTCBubyBsb25nZXIgdmlvbGF0ZXMgdGhlIFNBQiBtZW1vcnkgbW9kZWwuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnhjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjp4Y2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEFjcTgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRB
Y3EzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
dG9yZVJlbDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c3RvcmVSZWwxNik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpzdG9yZVJlbDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Onhj
aGc2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsb2FkQWNxNjQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmVSZWw2NCk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6aW5zdCk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnRyYXBwaW5nSW5zdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
YXBwZW5kU3RvcmUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmQp
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRUcmFwcGluZyk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9haXIvQWly
S2luZC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OktpbmQ6OmR1bXApOgorICAgICAgICAq
IGIzL2Fpci9BaXJLaW5kLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OktpbmQ6OktpbmQpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpLaW5kOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6S2luZDo6aGFzaCk6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdB
bGxvYy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6Cisg
ICAgICAgICogYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6bG93ZXJNYWNyb3MpOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAg
ICAgICAgKiBiMy9haXIvQWlyVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojpjb3JyZWN0U3FydCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZyk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0U3FydEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydE1lbSk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252
ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMik6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RUcmFwcGluZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RUcmFwcGluZ0xvYWRBZGRT
dG9yZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkRENFKToKKwogMjAxNy0w
NS0xOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
RlRMIHdoaXRlbGlzdCBkZWJ1Z2dpbmcgb3B0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShy
ZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMTMsNiArMzAxMywzNiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIHhjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGcxNihSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGczMihSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xf
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4Y2hnMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCiAgICAgLy8g
V2UgdGFrZSBtZW1vcnlGZW5jZSB0byBtZWFuIGFjcXJlbC4gVGhpcyBoYXMgYWNxcmVsIHNlbWFu
dGljcyBvbiB4ODYuCiAgICAgdm9pZCBtZW1vcnlGZW5jZSgpCiAgICAgewpAQCAtMzczOCwxMTYg
KzM3NjgsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ4KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgbG9hZEFjcTgoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGxvYWRBY3ExNihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0g
ICAgdm9pZCBsb2FkQWNxMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVS
ZWw4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTgo
c3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7Ci0g
ICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlOChpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7
Ci0gICAgICAgIHN0b3JlOChpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3Jl
UmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3Jl
MTYoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0
KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQotICAgIHsKLSAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMy
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIo
c3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOwotICAgIH0KLSAg
ICAKICAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBv
ZiBub3JtYWwgc3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KICAgICB2b2lkIHN0b3Jl
RmVuY2UoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0Nyw2ICsxNDQ3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHhjaGc2NChSZWdp
c3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCB4Y2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CiAgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5j
bXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwpA
QCAtMTY4NSwzNiArMTY5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ff
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAg
ICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2
NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTY0
KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKLSAgICB9Ci0g
ICAgCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICB2b2lkIGxvYWRGcm9tVExTNjQodWlu
dDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBJbnN0IGluc3QoQXJncyYmLi4uIGFyZ3Mp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3QgcmVzdWx0KHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7Ci0gICAgICAgICAgICByZXN1bHQua2luZC50cmFwcyB8PSBtX3RyYXBzOworICAg
ICAgICAgICAgcmVzdWx0LmtpbmQuZWZmZWN0cyB8PSBtX3RyYXBzOwogICAgICAgICAgICAgbV93
YXNXcmFwcGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
QEAgLTU2OCw3ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIEluc3QgdHJhcHBpbmdJbnN0KGJvb2wg
dHJhcHMsIEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKICAgICAgICAgSW5zdCByZXN1bHQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmVzdWx0LmtpbmQudHJhcHMgfD0gdHJh
cHM7CisgICAgICAgIHJlc3VsdC5raW5kLmVmZmVjdHMgfD0gdHJhcHM7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtOTYxLDggKzk2MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhhdmUgZmVuY2VzLCBhbmQg
dGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCi0gICAgICAgIGlmICghaXNY
ODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAg
aWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92
YWx1ZSk7CkBAIC0xMDE3LDI5ICsxMDE2LDI4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIEluc3QgY3JlYXRlU3RvcmUoQWlyOjpPcGNvZGUgbW92ZSwgVmFs
dWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCisgICAgSW5zdCBjcmVhdGVTdG9yZShBaXI6Oktp
bmQgbW92ZSwgVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBp
ZiAoaW1tKHZhbHVlKSAmJiBpc1ZhbGlkRm9ybShtb3ZlLCBBcmc6OkltbSwgZGVzdC5raW5kKCkp
KQorICAgICAgICBpZiAoaW1tKHZhbHVlKSAmJiBpc1ZhbGlkRm9ybShtb3ZlLm9wY29kZSwgQXJn
OjpJbW0sIGRlc3Qua2luZCgpKSkKICAgICAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIGltbSh2YWx1ZSksIGRlc3QpOwogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KICAgICAKLSAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CiAgICAgICAg
IHN3aXRjaCAod2lkdGgpIHsKICAgICAgICAgY2FzZSBXaWR0aDg6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChiYW5rID09IEdQKTsKLSAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgICAgICByZXR1cm4gQWlyOjpTdG9yZTg7CiAg
ICAgICAgIGNhc2UgV2lkdGgxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0g
R1ApOwotICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9y
ZTE2OworICAgICAgICAgICAgcmV0dXJuIEFpcjo6U3RvcmUxNjsKICAgICAgICAgY2FzZSBXaWR0
aDMyOgogICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CiAgICAgICAgICAgICBjYXNlIEdQOgot
ICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZTMyOwogICAgICAgICAgICAgY2FzZSBGUDoKLSAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVGbG9hdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA0
Nyw5ICsxMDQ1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRC
aXQoKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKICAgICAgICAgICAgIGNhc2UgR1A6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZTsKICAgICAgICAgICAgIGNhc2UgRlA6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOwogICAgICAgICAgICAgICAgIHJldHVy
biBNb3ZlRG91YmxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDU3
LDI1ICsxMDU0LDMzIEBAIHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogICAgIAotICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2
YWx1ZSkKKyAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0
KQogICAgIHsKICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwotICAg
ICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NXaWR0aCgpLCBtZW1vcnktPmFj
Y2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKLSAgICB9CiAKLSAgICBJbnN0IGNyZWF0
ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQotICAgIHsKLSAgICAgICAgQWly
OjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CisgICAgICAg
IEFpcjo6S2luZCBraW5kOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAga2lu
ZCA9IE9QQ09ERV9GT1JfV0lEVEgoWGNoZywgbWVtb3J5LT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAg
ICAgICAgICAgICBraW5kLmVmZmVjdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIFRtcCBzd2Fw
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRN
b3ZlRm9yVHlwZShtZW1vcnktPmFjY2Vzc1R5cGUoKSksIHRtcChtZW1vcnktPmNoaWxkKDApKSwg
c3dhcFRtcCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKGtpbmQsIHN3YXBUbXAsIGRlc3QpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAga2luZCA9IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVSZWwsIG1lbW9yeS0+YWNjZXNz
V2lkdGgoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAga2luZCA9IHN0b3JlT3Bjb2Rl
KG1lbW9yeS0+YWNjZXNzV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCkpOworICAgICAgICAK
KyAgICAgICAga2luZC5lZmZlY3RzIHw9IG1lbW9yeS0+dHJhcHMoKTsKKyAgICAgICAgCisgICAg
ICAgIGFwcGVuZChjcmVhdGVTdG9yZShraW5kLCBtZW1vcnktPmNoaWxkKDApLCBkZXN0KSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZFN0
b3JlKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7Ci0gICAg
fQotICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTE1MSwxNSArMTE1NiwxNSBAQCBwcml2YXRlOgog
I2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgotICAgIHZvaWQgYXBwZW5kKEFpcjo6T3Bjb2RlIG9wY29kZSwgQXJndW1lbnRz
JiYuLi4gYXJndW1lbnRzKQorICAgIHZvaWQgYXBwZW5kKEFpcjo6S2luZCBraW5kLCBBcmd1bWVu
dHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQo
SW5zdChvcGNvZGUsIG1fdmFsdWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pKTsKKyAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKEluc3Qoa2luZCwgbV92YWx1ZSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KICAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgdm9pZCBhcHBlbmRUcmFwcGlu
ZyhBaXI6Ok9wY29kZSBvcGNvZGUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB2b2lk
IGFwcGVuZFRyYXBwaW5nKEFpcjo6S2luZCBraW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewotICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIG9wY29kZSwgbV92YWx1ZSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4u
LikpOworICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IGtpbmQsIG1fdmFsdWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmQoSW5zdCYmIGluc3QpCkBAIC0xMjU0LDcgKzEy
NTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNh
bGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCks
IGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVh
dGVTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgp
LCBhcmcpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDE0LDQ2
ICsyNDE5LDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7
CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCk7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7Ci0gICAg
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNo
IChtZW1vcnktPnR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAg
ICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlID0gTG9hZEFjcTY0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZSht
ZW1vcnktPnR5cGUoKSk7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6OktpbmQga2luZCA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAga2luZC5lZmZl
Y3RzID0gdHJ1ZTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwga2lu
ZCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4Uzogewot
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4
dGVuZFRvMzI7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29k
ZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBB
aXI6OktpbmQga2luZCA9IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGtpbmQu
ZWZmZWN0cyA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpOworICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBraW5kLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgTG9hZDhaOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9h
ZDg7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Oktp
bmQga2luZCA9IExvYWQ4OworICAgICAgICAgICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8
TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZT
OiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZT
aWduZWRFeHRlbmRUbzMyOwotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpLaW5kIGtpbmQgPSBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAg
ICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7
CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRB
Y3ExNiA6IExvYWQxNjsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwg
b3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAg
ICAgIEFpcjo6S2luZCBraW5kID0gTG9hZDE2OworICAgICAgICAgICAga2luZC5lZmZlY3RzID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTcwNjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQ0NSw2ICs0NDQ1LDE3IEBAIHZvaWQgdGVzdEZsb29yQXJnV2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnYKICAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIHN0YXRpY19jYXN0PGRvdWJsZT4o
Zmxvb3JmKGEpKSkpOwogfQogCitkb3VibGUgY29ycmVjdFNxcnQoZG91YmxlIHZhbHVlKQorewor
ICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgIGRvdWJsZSByZXN1bHQ7CisgICAgICAgIGFzbSAo
InNxcnRzZCAlMSwgJTAiIDogIj1ZaSIocmVzdWx0KSA6ICJZaSIodmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHNxcnQodmFsdWUpOworfQor
CiB2b2lkIHRlc3RTcXJ0QXJnKGRvdWJsZSBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAt
NDQ1NSw3ICs0NDY2LDcgQEAgdm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKICAgICAgICAgICAg
IHByb2MsIFNxcnQsIE9yaWdpbigpLAogICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKSkp
OwogCi0gICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEp
LCBzcXJ0KGEpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+
KHByb2MsIGEpLCBjb3JyZWN0U3FydChhKSkpOwogfQogCiB2b2lkIHRlc3RTcXJ0SW1tKGRvdWJs
ZSBhKQpAQCAtNDQ2Nyw3ICs0NDc4LDcgQEAgdm9pZCB0ZXN0U3FydEltbShkb3VibGUgYSkKICAg
ICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTcXJ0LCBPcmlnaW4oKSwgYXJndW1lbnQpKTsKIAotICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgc3FydChhKSkpOworICAgIENIRUNL
KGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgY29ycmVjdFNxcnQoYSkp
KTsKIH0KIAogdm9pZCB0ZXN0U3FydE1lbShkb3VibGUgYSkKQEAgLTQ0ODAsNyArNDQ5MSw3IEBA
IHZvaWQgdGVzdFNxcnRNZW0oZG91YmxlIGEpCiAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3FydCwgT3JpZ2luKCks
IGxvYWREb3VibGUpKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91
YmxlPihwcm9jLCAmYSksIHNxcnQoYSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxl
QW5kUnVuPGRvdWJsZT4ocHJvYywgJmEpLCBjb3JyZWN0U3FydChhKSkpOwogfQogCiB2b2lkIHRl
c3RTcXJ0QXJnKGZsb2F0IGEpCkBAIC00NDk0LDcgKzQ1MDUsNyBAQCB2b2lkIHRlc3RTcXJ0QXJn
KGZsb2F0IGEpCiAgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKIAotICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0
PGludDMyX3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0Pihz
cXJ0KGEpKSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+
KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90Pihz
dGF0aWNfY2FzdDxmbG9hdD4oY29ycmVjdFNxcnQoYSkpKSkpOwogfQogCiB2b2lkIHRlc3RTcXJ0
SW1tKGZsb2F0IGEpCkBAIC00NTA2LDcgKzQ1MTcsNyBAQCB2b2lkIHRlc3RTcXJ0SW1tKGZsb2F0
IGEpCiAgICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBC
aXR3aXNlQ2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJv
bFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKIAotICAgIENIRUNLKGlz
SWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMy
X3Q+KGEpKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0KGEp
KSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNf
Y2FzdDxmbG9hdD4oY29ycmVjdFNxcnQoYSkpKSkpOwogfQogCiB2b2lkIHRlc3RTcXJ0TWVtKGZs
b2F0IGEpCkBAIC00NTE5LDcgKzQ1MzAsNyBAQCB2b2lkIHRlc3RTcXJ0TWVtKGZsb2F0IGEpCiAg
ICAgVmFsdWUqIHJlc3VsdDMyID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXR3aXNl
Q2FzdCwgT3JpZ2luKCksIHJlc3VsdCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVl
KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKIAotICAgIENIRUNLKGlzSWRlbnRp
Y2FsKGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNxcnQoYSkpKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgJmEpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKIH0KIAogdm9pZCB0ZXN0U3Fy
dEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lvbihmbG9hdCBhKQpAQCAtNDUzNSw3ICs0NTQ2
LDcgQEAgdm9pZCB0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVycwogICAgIFZhbHVl
KiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNhc3QsIE9y
aWdpbigpLCBmbG9hdFJlc3VsdCk7CiAgICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHBy
b2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdDMyKTsKIAotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KGNvbXBpbGVBbmRSdW48aW50MzJfdD4ocHJvYywgYml0d2lzZV9jYXN0PGludDMyX3Q+KGEpKSwg
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0KGEpKSkpKTsKKyAg
ICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9h
dD4oY29ycmVjdFNxcnQoYSkpKSkpOwogfQogCiB2b2lkIHRlc3RTcXJ0QXJnV2l0aEVmZmVjdGZ1
bERvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKQEAgLTQ1NTUsOCArNDU2Niw5IEBAIHZvaWQgdGVz
dFNxcnRBcmdXaXRoRWZmZWN0ZnVsRG91YmxlQ29udmUKIAogICAgIGRvdWJsZSBlZmZlY3QgPSAw
OwogICAgIGludDMyX3QgcmVzdWx0VmFsdWUgPSBjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2Ms
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSwgJmVmZmVjdCk7Ci0gICAgQ0hFQ0soaXNJZGVudGlj
YWwocmVzdWx0VmFsdWUsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4o
c3FydChhKSkpKSk7Ci0gICAgQ0hFQ0soaXNJZGVudGljYWwoZWZmZWN0LCBzdGF0aWNfY2FzdDxk
b3VibGU+KHNxcnQoYSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwocmVzdWx0VmFsdWUsIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oY29ycmVjdFNxcnQoYSkpKSkp
OworICAgIGRvdWJsZSBleHBlY3RlZCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oY29ycmVjdFNxcnQo
YSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgZXhwZWN0ZWQpKTsKIH0KIAogdm9p
ZCB0ZXN0Q29tcGFyZVR3b0Zsb2F0VG9Eb3VibGUoZmxvYXQgYSwgZmxvYXQgYikKQEAgLTU3OTMs
NiArNTgwNSw4IEBAIHZvaWQgdGVzdFN0b3JlUmVsQWRkTG9hZEFjcTMyKGludCBhbW91bnQKICAg
ICAgICAgY2hlY2tVc2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJsZGEiKTsKICAgICAgICAgY2hlY2tV
c2VzSW5zdHJ1Y3Rpb24oKmNvZGUsICJzdGwiKTsKICAgICB9CisgICAgaWYgKGlzWDg2KCkpCisg
ICAgICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAieGNoZyIpOwogICAgIENIRUNLKCFp
bnZva2U8aW50PigqY29kZSwgYW1vdW50KSk7CiAgICAgQ0hFQ0soc2xvdCA9PSAzNyArIGFtb3Vu
dCk7CiB9CkBAIC0xMzk3OSw3ICsxMzk5Myw3IEBAIHZvaWQgdGVzdFRyYXBwaW5nTG9hZCgpCiAg
ICAgdW5zaWduZWQgdHJhcHNDb3VudCA9IDA7CiAgICAgZm9yIChBaXI6OkJhc2ljQmxvY2sqIGJs
b2NrIDogcHJvYy5jb2RlKCkpIHsKICAgICAgICAgZm9yIChBaXI6Okluc3QmIGluc3QgOiAqYmxv
Y2spIHsKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQudHJhcHMpCisgICAgICAgICAgICBpZiAo
aW5zdC5raW5kLmVmZmVjdHMpCiAgICAgICAgICAgICAgICAgdHJhcHNDb3VudCsrOwogICAgICAg
ICB9CiAgICAgfQpAQCAtMTQwMTIsNyArMTQwMjYsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ1N0b3Jl
KCkKICAgICB1bnNpZ25lZCB0cmFwc0NvdW50ID0gMDsKICAgICBmb3IgKEFpcjo6QmFzaWNCbG9j
ayogYmxvY2sgOiBwcm9jLmNvZGUoKSkgewogICAgICAgICBmb3IgKEFpcjo6SW5zdCYgaW5zdCA6
ICpibG9jaykgewotICAgICAgICAgICAgaWYgKGluc3Qua2luZC50cmFwcykKKyAgICAgICAgICAg
IGlmIChpbnN0LmtpbmQuZWZmZWN0cykKICAgICAgICAgICAgICAgICB0cmFwc0NvdW50Kys7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xNDAzOCw3ICsxNDA1Miw3IEBAIHZvaWQgdGVzdFRyYXBwaW5n
TG9hZEFkZFN0b3JlKCkKICAgICBib29sIHRyYXBzID0gZmFsc2U7CiAgICAgZm9yIChBaXI6OkJh
c2ljQmxvY2sqIGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKICAgICAgICAgZm9yIChBaXI6Okluc3Qm
IGluc3QgOiAqYmxvY2spIHsKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQudHJhcHMpCisgICAg
ICAgICAgICBpZiAoaW5zdC5raW5kLmVmZmVjdHMpCiAgICAgICAgICAgICAgICAgdHJhcHMgPSB0
cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQwNTgsNyArMTQwNzIsNyBAQCB2b2lkIHRlc3RU
cmFwcGluZ0xvYWREQ0UoKQogICAgIHVuc2lnbmVkIHRyYXBzQ291bnQgPSAwOwogICAgIGZvciAo
QWlyOjpCYXNpY0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7CiAgICAgICAgIGZvciAoQWly
OjpJbnN0JiBpbnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLnRyYXBz
KQorICAgICAgICAgICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQogICAgICAgICAgICAgICAgIHRy
YXBzQ291bnQrKzsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJLaW5kLmNwcAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJLaW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBA
QCB2b2lkIEtpbmQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICBvdXQucHJpbnQo
b3Bjb2RlKTsKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWEoIiwgIiwgIjwiKTsKLSAgICBp
ZiAodHJhcHMpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgIlRyYXBzIik7CisgICAgaWYgKGVm
ZmVjdHMpCisgICAgICAgIG91dC5wcmludChjb21tYSwgIkVmZmVjdHMiKTsKICAgICBpZiAoY29t
bWEuZGlkUHJpbnQoKSkKICAgICAgICAgb3V0LnByaW50KCI+Iik7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpcktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpcktpbmQuaAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZQogc3RydWN0
IEtpbmQgewogICAgIEtpbmQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgOiBvcGNvZGUob3Bjb2Rl
KQotICAgICAgICAsIHRyYXBzKGZhbHNlKQorICAgICAgICAsIGVmZmVjdHMoZmFsc2UpCiAgICAg
ewogICAgIH0KICAgICAKQEAgLTU0LDcgKzU0LDcgQEAgc3RydWN0IEtpbmQgewogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBvcGNvZGUgPT0gb3RoZXIub3Bjb2RlCi0gICAgICAgICAgICAmJiB0cmFwcyA9PSBvdGhlci50
cmFwczsKKyAgICAgICAgICAgICYmIGVmZmVjdHMgPT0gb3RoZXIuZWZmZWN0czsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdApAQCAtNjQs
NyArNjQsNyBAQCBzdHJ1Y3QgS2luZCB7CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9wY29kZSkgKyAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRyYXBzKSA8PCAxNik7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ob3Bjb2RlKSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZWZmZWN0
cykgPDwgMTYpOwogICAgIH0KICAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QKQEAgLTc2LDE3ICs3NiwxMSBAQCBzdHJ1Y3QgS2luZCB7CiAgICAgCiAgICAgT3Bjb2RlIG9w
Y29kZTsKICAgICAKLSAgICAvLyBUaGlzIGlzIGFuIG9wY29kZS1hZ25vc3RpYyBmbGFnIHRoYXQg
aW5kaWNhdGVzIHRoYXQgd2UgZXhwZWN0IHRoYXQgdGhpcyBpbnN0cnVjdGlvbiB3aWxsCi0gICAg
Ly8gdHJhcC4gVGhpcyBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIGFzc3VtZSB0aGF0IHRoaXMgc2lk
ZS1leGl0cyBhbmQgdGhlcmVmb3JlIGhhcyBub24tY29udHJvbAotICAgIC8vIG5vbi1hcmcgZWZm
ZWN0cy4gVGhpcyBhbHNvIGNhdXNlcyB0aGUgY29tcGlsZXIgdG8gdGVsbCB5b3UgYWJvdXQgYWxs
IG9mIHRoZXNlIGluc3RydWN0aW9ucy4KLSAgICAvLyBOb3RlIHRoYXQgdGhpcyBpcyBqdXN0IG9u
ZSBvZiBzZXZlcmFsIHdheXMgb2Ygc3VwcG9ydGluZyB0cmFwcGluZyBpbiBBaXIsIGFuZCBpdCdz
IHRoZSBsZXNzCi0gICAgLy8gcHJlY2lzZSB2YXJpYW50IGJlY2F1c2UgaXQncyBvcmlnaW4tYmFz
ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBhbiBpbnN0cnVjdGlvbiB3YXMgZnVzZWQgb3V0Ci0gICAg
Ly8gb2YgQjMgdmFsdWVzIHRoYXQgaGFkIGRpZmZlcmVudCBvcmlnaW5zLCB0aGVuIHRoZSBvcmln
aW4gYXQgd2hpY2ggeW91J2xsIGFwcGVhciB0byB0cmFwCi0gICAgLy8gd2lsbCBiZSBzb21ld2hh
dCByYW5kb20uIFRoZSB1cHNpZGUgb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IGl0IGltcG9zZXMg
YnkgZmFyIHRoZSBsZWFzdAotICAgIC8vIG92ZXJoZWFkIG9uIHRoZSBjb21waWxlci4KLSAgICAv
LyBGSVhNRTogTWFrZSB0aGlzIGNvbXBsZXRlbHkgd29yay4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNjg5Ci0gICAgYm9vbCB0cmFwcyA6IDE7Cisg
ICAgLy8gVGhpcyBpcyBhbiBvcGNvZGUtYWdub3N0aWMgZmxhZyB0aGF0IGluZGljYXRlcyB0aGF0
IHdlIGV4cGVjdCB0aGF0IHRoaXMgaW5zdHJ1Y3Rpb24gd2lsbCBkbworICAgIC8vIGFueSBvZiB0
aGUgZm9sbG93aW5nOgorICAgIC8vIC0gVHJhcC4KKyAgICAvLyAtIFBlcmZvcm0gc29tZSBub24t
YXJnIG5vbi1jb250cm9sIGVmZmVjdC4KKyAgICBib29sIGVmZmVjdHMgOiAxOwogfTsKIAogfSB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJMb3dlckFmdGVyUmVnQWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAkocmV2aXNpb24g
MjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlckFmdGVyUmVn
QWxsb2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsOCArMjI3LDggQEAgdm9pZCBsb3dlckFm
dGVyUmVnQWxsb2MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAgaW5zdEluZGV4LCBl
bWl0U2h1ZmZsZShjb2RlLCBwYWlycywgZ3BTY3JhdGNoLCBmcFNjcmF0Y2gsIGluc3Qub3JpZ2lu
KSk7CiAKICAgICAgICAgICAgICAgICBpbnN0ID0gYnVpbGRDQ2FsbChjb2RlLCBpbnN0Lm9yaWdp
biwgZGVzdGluYXRpb25zKTsKLSAgICAgICAgICAgICAgICBpZiAob2xkS2luZC50cmFwcykKLSAg
ICAgICAgICAgICAgICAgICAgaW5zdC5raW5kLnRyYXBzID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAob2xkS2luZC5lZmZlY3RzKQorICAgICAgICAgICAgICAgICAgICBpbnN0LmtpbmQuZWZm
ZWN0cyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBlbWl0IGNv
ZGUgdG8gcmVzdG9yZSByZWdpc3RlcnMuCiAgICAgICAgICAgICAgICAgcGFpcnMucmVzaXplKDAp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jvcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMb3dlck1hY3Jv
cy5jcHAJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw4ICs5NSw4IEBAIHZvaWQg
bG93ZXJNYWNyb3MoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICBBcmcgcmVzdWx0RHN0ID0g
dmFsdWUtPnR5cGUoKSA9PSBWb2lkID8gQXJnKCkgOiBpbnN0LmFyZ3NbMV07CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaW5zdCA9IGJ1aWxkQ0NhbGwoY29kZSwgaW5zdC5vcmln
aW4sIGRlc3RpbmF0aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZEtpbmQudHJhcHMpCi0g
ICAgICAgICAgICAgICAgICAgIGluc3Qua2luZC50cmFwcyA9IHRydWU7CisgICAgICAgICAgICAg
ICAgaWYgKG9sZEtpbmQuZWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAgaW5zdC5raW5kLmVm
ZmVjdHMgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgVG1wIHJlc3VsdCA9IGNDYWxsUmVzdWx0
KHZhbHVlLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsdWUtPnR5cGUoKSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNv
ZGVzCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkpCkBAIC03MjMsOSArNzIzLDcgQEAgTG9hZDgg
VTpHOjgsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRleCwgVG1wCiAKLUxvYWRBY3E4
IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCi0gICAgeDg2OiBBZGRyLCBUbXAKLSAgICB4ODY6IElu
ZGV4LCBUbXAKK2FybTogTG9hZEFjcTggVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1w
bGVBZGRyLCBUbXAKIAogU3RvcmU4IFU6Rzo4LCBEOkc6OApAQCAtNzM0LDM4ICs3MzIsMjggQEAg
U3RvcmU4IFU6Rzo4LCBEOkc6OAogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1tLCBB
ZGRyCiAKLVN0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2VmZmVjdHMKLSAgICB4ODY6IFRtcCwgSW5k
ZXgKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4NjogSW1tLCBJbmRleAotICAgIHg4NjogSW1t
LCBBZGRyCithcm06IFN0b3JlUmVsOCBVOkc6OCwgRDpHOjggL2VmZmVjdHMKICAgICBUbXAsIFNp
bXBsZUFkZHIKIAogTG9hZDhTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyCiAgICAgQWRk
ciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCi1Mb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgs
IFpEOkc6MzIgL2VmZmVjdHMKLSAgICB4ODY6IEFkZHIsIFRtcAotICAgIHg4NjogSW5kZXgsIFRt
cAorYXJtOiBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgVTpHOjgsIFpEOkc6MzIgL2VmZmVjdHMK
ICAgICBTaW1wbGVBZGRyLCBUbXAKIAogTG9hZDE2IFU6RzoxNiwgWkQ6RzozMgogICAgIEFkZHIs
IFRtcAogICAgIEluZGV4LCBUbXAKIAotTG9hZEFjcTE2IFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0
cwotICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRleCwgVG1wCithcm06IExvYWRBY3Ex
NiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1wbGVBZGRyLCBUbXAKIAogTG9hZDE2
U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBUbXAKICAgICBJbmRl
eCwgVG1wCiAKLUxvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZl
Y3RzCi0gICAgeDg2OiBBZGRyLCBUbXAKLSAgICB4ODY6IEluZGV4LCBUbXAKK2FybTogTG9hZEFj
cTE2U2lnbmVkRXh0ZW5kVG8zMiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1wbGVB
ZGRyLCBUbXAKIAogU3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgpAQCAtNzc0LDM3ICs3NjIsMzcgQEAg
U3RvcmUxNiBVOkc6MTYsIEQ6RzoxNgogICAgIHg4NjogSW1tLCBJbmRleAogICAgIHg4NjogSW1t
LCBBZGRyCiAKLVN0b3JlUmVsMTYgVTpHOjE2LCBEOkc6MTYgL2VmZmVjdHMKLSAgICB4ODY6IFRt
cCwgSW5kZXgKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4NjogSW1tLCBJbmRleAotICAgIHg4
NjogSW1tLCBBZGRyCithcm06IFN0b3JlUmVsMTYgVTpHOjE2LCBEOkc6MTYgL2VmZmVjdHMKICAg
ICBUbXAsIFNpbXBsZUFkZHIKIAotTG9hZEFjcTMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cwot
ICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRleCwgVG1wCithcm06IExvYWRBY3EzMiBV
Okc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKICAgICBTaW1wbGVBZGRyLCBUbXAKIAotU3RvcmVSZWwz
MiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4Njog
VG1wLCBJbmRleAotICAgIHg4NjogSW1tLCBBZGRyCi0gICAgeDg2OiBJbW0sIEluZGV4Cithcm06
IFN0b3JlUmVsMzIgVTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCiAgICAgVG1wLCBTaW1wbGVBZGRy
CiAKLTY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpHOjY0IC9lZmZlY3RzCi0gICAgeDg2OiBBZGRy
LCBUbXAKLSAgICB4ODY6IEluZGV4LCBUbXAKK2FybTY0OiBMb2FkQWNxNjQgVTpHOjY0LCBaRDpH
OjY0IC9lZmZlY3RzCiAgICAgU2ltcGxlQWRkciwgVG1wCiAKLTY0OiBTdG9yZVJlbDY0IFU6Rzo2
NCwgWkQ6Rzo2NCAvZWZmZWN0cwotICAgIHg4NjogVG1wLCBBZGRyCi0gICAgeDg2OiBUbXAsIElu
ZGV4Ci0gICAgeDg2OiBJbW0sIEFkZHIKLSAgICB4ODY6IEltbSwgSW5kZXgKK2FybTY0OiBTdG9y
ZVJlbDY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cwogICAgIFRtcCwgU2ltcGxlQWRkcgogCit4
ODY6IFhjaGc4IFVEOkc6OCwgVUQ6Rzo4IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1w
LCBJbmRleAorCit4ODY6IFhjaGcxNiBVRDpHOjE2LCBVRDpHOjE2IC9lZmZlY3RzCisgICAgVG1w
LCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODY6IFhjaGczMiBVRDpHOjMyLCBVRDpHOjMyIC9l
ZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAorCit4ODZfNjQ6IFhjaGc2NCBV
RDpHOjY0LCBVRDpHOjY0IC9lZmZlY3RzCisgICAgVG1wLCBBZGRyCisgICAgVG1wLCBJbmRleAor
CiAjIFRoZSBmaXJzdCBvcGVyYW5kIGlzIHJheC4KICMgRklYTUU6IFRoaXMgZm9ybXVsYXRpb24g
bWVhbnMgdGhhdCB0aGUgYm9vbGVhbiByZXN1bHQgY2Fubm90IGJlIHB1dCBpbiBlYXgsIGV2ZW4g
dGhvdWdoIGFsbCB1c2VycwogIyBvZiB0aGlzIHdvdWxkIGJlIE9LIHdpdGggdGhhdC4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVmFsaWRhdGUuY3BwCShyZXZpc2lv
biAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclZhbGlkYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDggKzEwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBTaHVmZmxlOgogICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBjYW4ndCBoYW5kbGUgdHJhcHBpbmcgc2h1ZmZsZXMgYmVjYXVzZSBv
ZiBob3cgd2UgbG93ZXIgdGhlbS4gVGhhdCBjb3VsZAotICAgICAgICAgICAgICAgICAgICAvLyBi
ZSBmaXhlZCB0aG91Z2guCi0gICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKCFpbnN0LmtpbmQu
dHJhcHMsICgiQXQgIiwgaW5zdCwgIiBpbiAiLCAqYmxvY2spKTsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gYmUgZml4ZWQgdGhvdWdoLiBEaXR0byBmb3Igc2h1ZmZsZXMgdGhhdCB3b3VsZCBkbyBm
ZW5jZXMsIHdoaWNoIGlzIHRoZSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAvLyB1c2Ugb2Yg
dGhpcyBiaXQuCisgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKCFpbnN0LmtpbmQuZWZmZWN0
cywgKCJBdCAiLCBpbnN0LCAiIGluICIsICpibG9jaykpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvb3Bjb2RlX2dlbmVyYXRvci5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5l
cmF0b3IucmIJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvb3Bjb2RlX2dlbmVyYXRvci5yYgkod29ya2luZyBjb3B5KQpAQCAtMTEyNiw3ICsxMTI2LDcg
QEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgCiAgICAgb3V0cC5wdXRzICJib29s
IEluc3Q6Omhhc05vbkFyZ05vbkNvbnRyb2xFZmZlY3RzKCkiCiAgICAgb3V0cC5wdXRzICJ7Igot
ICAgIG91dHAucHV0cyAiaWYgKGtpbmQudHJhcHMpIgorICAgIG91dHAucHV0cyAiaWYgKGtpbmQu
ZWZmZWN0cykiCiAgICAgb3V0cC5wdXRzICJyZXR1cm4gdHJ1ZTsiCiAgICAgb3V0cC5wdXRzICJz
d2l0Y2ggKGtpbmQub3Bjb2RlKSB7IgogICAgIGZvdW5kVHJ1ZSA9IGZhbHNlCkBAIC0xMTU0LDcg
KzExNTQsNyBAQCB3cml0ZUgoIk9wY29kZUdlbmVyYXRlZCIpIHsKICAgICAKICAgICBvdXRwLnB1
dHMgImJvb2wgSW5zdDo6aGFzTm9uQXJnRWZmZWN0cygpIgogICAgIG91dHAucHV0cyAieyIKLSAg
ICBvdXRwLnB1dHMgImlmIChraW5kLnRyYXBzKSIKKyAgICBvdXRwLnB1dHMgImlmIChraW5kLmVm
ZmVjdHMpIgogICAgIG91dHAucHV0cyAicmV0dXJuIHRydWU7IgogICAgIG91dHAucHV0cyAic3dp
dGNoIChraW5kLm9wY29kZSkgeyIKICAgICBmb3VuZFRydWUgPSBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310578</attachid>
            <date>2017-05-18 17:29:35 -0700</date>
            <delta_ts>2017-05-18 19:58:02 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>33387</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE3MDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE3LTA1LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjM6OlZhbHVlOjplZmZlY3RzKCkgc2F5cyB0aGF0IGhhdmluZyBhIGZlbmNlIHJhbmdlIGltcGxp
ZXMgdGhlIGZlbmNlIGJpdCwgYnV0IG9uIHg4Nl82NCB3ZSBsb3dlciBsb2FkQWNxL3N0b3JlUmVs
IHRvIGxvYWQvc3RvcmUgc28gdGhlIHN0b3JlLWJlZm9yZS1sb2FkIGZlbmNlIGJpdCBvcmRlcmlu
Z3Mgd29uJ3QgYmUgaG9ub3JlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcyMzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBUaGlzIGNoYW5nZXMgQjMgdG8gZW1pdCB4Y2hnIGFuZCBpdHMg
dmFyaWFudHMgZm9yIGZlbmNlZCBzdG9yZXMgb24geDg2LiBUaGlzIGVuc3VyZXMgdGhhdAorICAg
ICAgICBmZW5jZWQgc3RvcmVzIGNhbm5vdCBiZSByZW9yZGVyZWQgYXJvdW5kIG90aGVyIGZlbmNl
ZCBpbnN0cnVjdGlvbnMuIFByZXZpb3VzbHksIEIzIGVtaXR0ZWQKKyAgICAgICAgbm9ybWFsIHN0
b3JlIGluc3RydWN0aW9ucyBmb3IgZmVuY2VkIHN0b3Jlcy4gVGhhdCdzIHdyb25nIGJlY2F1c2Ug
dGhlbiB5b3UgZ2V0IHJlb3JkZXJpbmdzCisgICAgICAgIHRoYXQgYXJlIHBvc3NpYmxlIGluIFRT
TyBidXQgaW1wb3NzaWJsZSBpbiBTQy4gRmVuY2VkIGluc3RydWN0aW9ucyBhcmUgc3VwcG9zZWQg
dG8gYmUgU0MKKyAgICAgICAgd2l0aCByZXNwZWN0IGZvciBlYWNoIG90aGVyLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpcyBpbXByZWNpc2UuIElmIHlvdSByZWFsbHkganVzdCB3YW50ZWQgYSBz
dG9yZS1yZWxlYXNlLCB0aGVuIGV2ZXJ5IFg4NiBzdG9yZSBkb2VzIHRoaXMuCisgICAgICAgIEJ1
dCwgaW4gQjMsIGZlbmNlZCBzdG9yZXMgYXJlIEFSTS1zdHlsZSBzdG9yZS1yZWxlYXNlLCBtZWFu
aW5nIHRoYXQgdGhleSBhcmUgZmVuY2VkIHdpdGgKKyAgICAgICAgcmVzcGVjdCB0byBhbGwgb3Ro
ZXIgZmVuY2VzLiBJZiB3ZSBldmVyIGRpZCB3YW50IHRvIHNheSB0aGF0IHNvbWV0aGluZyBpcyBh
IHN0b3JlIHJlbGVhc2UgaW4KKyAgICAgICAgdGhlIHRyYWRpdGlvbmFsIHNlbnNlLCB0aGVuIHdl
J2Qgd2FudCBNZW1vcnlWYWx1ZSB0byBoYXZlIGEgZmVuY2UgZmxhZy4gVGhlbiwgaGF2aW5nIGEg
ZmVuY2UKKyAgICAgICAgcmFuZ2Ugd2l0aG91dCB0aGUgZmVuY2UgZmxhZyB3b3VsZCBtZWFuIHRo
ZSB0cmFkaXRpb25hbCBzdG9yZS1yZWxlYXNlLCB3aGljaCBsb3dlcnMgdG8gYQorICAgICAgICBu
b3JtYWwgc3RvcmUgb24geDg2LiBCdXQgdG8gbXkga25vd2xlZGdlLCB0aGF0IHRyYWRpdGlvbmFs
IHN0b3JlLXJlbGVhc2UgaXMgb25seSB1c2VmdWwgZm9yCisgICAgICAgIHVubG9ja2luZyBzcGlu
bG9ja3MuIFdlIGRvbid0IHVzZSBzcGlubG9ja3MgaW4gSlNDLiBBZGFwdGl2ZSBsb2NrcyByZXF1
aXJlIENBUyBmb3IgdW5sb2NrLAorICAgICAgICBhbmQgQjMgQ0FTIGlzIHBsZW50eSBmYXN0LiBJ
IHRoaW5rIGl0J3MgT0sgdG8gaGF2ZSB0aGlzIHNtYWxsIGltcHJlY2lzaW9uIG9mIGdpdmluZyBj
bGllbnRzCisgICAgICAgIGFuIEFSTS1zdHlsZSBzdG9yZS1yZWxlYXNlIG9uIHg4NiB1c2luZyB4
Y2hnLgorICAgICAgICAKKyAgICAgICAgVGhlIGltcGxpY2F0aW9uIG9mIHRoaXMgY2hhbmdlIGlz
IHRoYXQgdGhlIEZUTCBubyBsb25nZXIgdmlvbGF0ZXMgdGhlIFNBQiBtZW1vcnkgbW9kZWwuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnhjaGc4KToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJYODZDb21tb246OnhjaGcxNik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uOjp4Y2hnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6bG9hZEFjcTgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6bG9hZEFjcThTaWduZWRFeHRlbmRUbzMyKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRBY3ExNik6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmxvYWRB
Y3EzMik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpz
dG9yZVJlbDgpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6c3RvcmVSZWwxNik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpzdG9yZVJlbDMyKTogRGVsZXRlZC4KKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Onhj
aGc2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsb2FkQWNxNjQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmVSZWw2NCk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6TG93ZXJUb0Fpcjo6QXJnUHJvbWlzZTo6aW5zdCk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6OnRyYXBwaW5nSW5zdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okxvd2VyVG9BaXI6OnRyeUFwcGVuZFN0b3JlQmluT3ApOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpMb3dlclRvQWlyOjpjcmVhdGVTdG9yZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2Vy
VG9BaXI6OnN0b3JlT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
YXBwZW5kU3RvcmUpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmQp
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRUcmFwcGluZyk6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmZpbGxTdGFja21hcCk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9haXIvQWly
S2luZC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OktpbmQ6OmR1bXApOgorICAgICAgICAq
IGIzL2Fpci9BaXJLaW5kLmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OktpbmQ6OktpbmQpOgor
ICAgICAgICAoSlNDOjpCMzo6QWlyOjpLaW5kOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6S2luZDo6aGFzaCk6CisgICAgICAgICogYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdB
bGxvYy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Omxvd2VyQWZ0ZXJSZWdBbGxvYyk6Cisg
ICAgICAgICogYjMvYWlyL0Fpckxvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6bG93ZXJNYWNyb3MpOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAg
ICAgICAgKiBiMy9haXIvQWlyVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL2Fpci9vcGNvZGVf
Z2VuZXJhdG9yLnJiOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojpjb3JyZWN0U3FydCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZyk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0U3FydEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydE1lbSk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZ1dpdGhVc2VsZXNzRG91YmxlQ29udmVyc2lv
bik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxEb3VibGVDb252
ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMik6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RUcmFwcGluZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RUcmFwcGluZ0xvYWRBZGRT
dG9yZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0VHJhcHBpbmdMb2FkRENFKToKKwogMjAxNy0w
NS0xOCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
RlRMIHdoaXRlbGlzdCBkZWJ1Z2dpbmcgb3B0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShy
ZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMTMsNiArMzAxMywzNiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIHhjaGc4KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54Y2hnYl9ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2Up
OworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGc4KFJlZ2lzdGVySUQgcmVnLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdiX3JtKHJlZywgYWRkcmVz
cy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgeGNoZzE2KFJlZ2lzdGVySUQgcmVnLCBBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zm
c2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGcxNihSZWdpc3Rl
cklEIHJlZywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54
Y2hnd19ybShyZWcsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHhjaGczMihSZWdpc3RlcklE
IHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ2xf
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAgCisgICAg
dm9pZCB4Y2hnMzIoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIueGNoZ2xfcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5i
YXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCiAgICAgLy8g
V2UgdGFrZSBtZW1vcnlGZW5jZSB0byBtZWFuIGFjcXJlbC4gVGhpcyBoYXMgYWNxcmVsIHNlbWFu
dGljcyBvbiB4ODYuCiAgICAgdm9pZCBtZW1vcnlGZW5jZSgpCiAgICAgewpAQCAtMzczOCwxMTYg
KzM3NjgsNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhjaGdsX3JtKHJlZywgYWRk
cmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgfQogICAgIAotICAgIHZvaWQgbG9hZEFjcTgoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ4KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgbG9hZEFjcTgoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsKLSAg
ICAgICAgbG9hZDgoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxOFNp
Z25lZEV4dGVuZFRvMzIoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGxvYWRBY3E4U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBsb2FkOFNpZ25lZEV4dGVuZFRvMzIoc3JjLCBkZXN0KTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxMTYoQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKLSAgICB7Ci0gICAgICAgIGxvYWQxNihzcmMsIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIGxvYWRBY3ExNihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBsb2FkMTYoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBsb2FkQWNxMTZT
aWduZWRFeHRlbmRUbzMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCi0gICAgewotICAg
ICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAg
IHZvaWQgbG9hZEFjcTE2U2lnbmVkRXh0ZW5kVG8zMihCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMTZTaWduZWRFeHRlbmRUbzMyKHNyYywgZGVzdCk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgbG9hZEFjcTMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCi0gICAgewotICAgICAgICBsb2FkMzIoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0g
ICAgdm9pZCBsb2FkQWNxMzIoQmFzZUluZGV4IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQotICAgIHsK
LSAgICAgICAgbG9hZDMyKHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVS
ZWw4KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTgo
c3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDgoUmVnaXN0ZXJJRCBz
cmMsIEJhc2VJbmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmU4KHNyYywgZGVzdCk7Ci0g
ICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw4KFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3Mg
ZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlOChpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIHN0b3JlUmVsOChUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7
Ci0gICAgICAgIHN0b3JlOChpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN0b3Jl
UmVsMTYoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3Jl
MTYoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFJlZ2lzdGVy
SUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMTYoc3JjLCBkZXN0
KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEFk
ZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMTYoaW1tLCBkZXN0KTsKLSAgICB9Ci0g
ICAgCi0gICAgdm9pZCBzdG9yZVJlbDE2KFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBkZXN0
KQotICAgIHsKLSAgICAgICAgc3RvcmUxNihpbW0sIGRlc3QpOwotICAgIH0KLSAgICAKLSAgICB2
b2lkIHN0b3JlUmVsMzIoUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAg
ICAgIHN0b3JlMzIoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMy
KFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIo
c3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0z
MiBpbW0sIEFkZHJlc3MgZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlMzIoaW1tLCBkZXN0KTsK
LSAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9yZVJlbDMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJ
bmRleCBkZXN0KQotICAgIHsKLSAgICAgICAgc3RvcmUzMihpbW0sIGRlc3QpOwotICAgIH0KLSAg
ICAKICAgICAvLyBXZSB0YWtlIHRoaXMgdG8gbWVhbiB0aGF0IGl0IHByZXZlbnRzIG1vdGlvbiBv
ZiBub3JtYWwgc3RvcmVzLiBTbywgaXQncyBhIG5vLW9wIG9uIHg4Ni4KICAgICB2b2lkIHN0b3Jl
RmVuY2UoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0Nyw2ICsxNDQ3LDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcigpKSwgbWFzazgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIHhjaGc2NChSZWdp
c3RlcklEIHJlZywgQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
eGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlKTsKKyAgICB9CisgICAg
CisgICAgdm9pZCB4Y2hnNjQoUmVnaXN0ZXJJRCByZWcsIEJhc2VJbmRleCBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ffcm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRk
cmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICB9CisgICAgCiAg
ICAgdm9pZCBhdG9taWNTdHJvbmdDQVM2NChTdGF0dXNDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBleHBlY3RlZEFuZFJlc3VsdCwgUmVnaXN0ZXJJRCBuZXdWYWx1ZSwgQWRkcmVzcyBhZGRyZXNz
LCBSZWdpc3RlcklEIHJlc3VsdCkKICAgICB7CiAgICAgICAgIGF0b21pY1N0cm9uZ0NBUyhjb25k
LCBleHBlY3RlZEFuZFJlc3VsdCwgcmVzdWx0LCBhZGRyZXNzLCBbJl0geyBtX2Fzc2VtYmxlci5j
bXB4Y2hncV9ybShuZXdWYWx1ZSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSk7IH0pOwpA
QCAtMTY4NSwzNiArMTY5NSw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3Ff
cm0ocmVnLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBsb2FkQWNxNjQoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKLSAgICB7Ci0gICAgICAgIGxvYWQ2NChzcmMsIGRlc3QpOwotICAg
IH0KLSAgICAKLSAgICB2b2lkIGxvYWRBY3E2NChCYXNlSW5kZXggc3JjLCBSZWdpc3RlcklEIGRl
c3QpCi0gICAgewotICAgICAgICBsb2FkNjQoc3JjLCBkZXN0KTsKLSAgICB9Ci0gICAgCi0gICAg
dm9pZCBzdG9yZVJlbDY0KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAg
ICAgICBzdG9yZTY0KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2
NChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTY0
KHNyYywgZGVzdCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1t
MzIgaW1tLCBBZGRyZXNzIGRlc3QpCi0gICAgewotICAgICAgICBzdG9yZTY0KGltbSwgZGVzdCk7
Ci0gICAgfQotICAgIAotICAgIHZvaWQgc3RvcmVSZWw2NChUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggZGVzdCkKLSAgICB7Ci0gICAgICAgIHN0b3JlNjQoaW1tLCBkZXN0KTsKLSAgICB9Ci0g
ICAgCiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKICAgICB2b2lkIGxvYWRGcm9tVExTNjQodWlu
dDMyX3Qgb2Zmc2V0LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgICAgICBJbnN0IGluc3QoQXJncyYmLi4uIGFyZ3Mp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3QgcmVzdWx0KHN0ZDo6Zm9yd2FyZDxBcmdzPihh
cmdzKS4uLik7Ci0gICAgICAgICAgICByZXN1bHQua2luZC50cmFwcyB8PSBtX3RyYXBzOworICAg
ICAgICAgICAgcmVzdWx0LmtpbmQuZWZmZWN0cyB8PSBtX3RyYXBzOwogICAgICAgICAgICAgbV93
YXNXcmFwcGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
QEAgLTU2OCw3ICs1NjgsNyBAQCBwcml2YXRlOgogICAgIEluc3QgdHJhcHBpbmdJbnN0KGJvb2wg
dHJhcHMsIEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKICAgICAgICAgSW5zdCByZXN1bHQoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgcmVzdWx0LmtpbmQudHJhcHMgfD0gdHJh
cHM7CisgICAgICAgIHJlc3VsdC5raW5kLmVmZmVjdHMgfD0gdHJhcHM7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtOTYxLDggKzk2MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAKLSAgICAgICAgLy8gT24geDg2LCBhbGwgc3RvcmVzIGhhdmUgZmVuY2VzLCBhbmQg
dGhpcyBpc24ndCByZW9yZGVyaW5nIHRoZSBzdG9yZSBpdHNlbGYuCi0gICAgICAgIGlmICghaXNY
ODYoKSAmJiBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSkKKyAgICAgICAg
aWYgKG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgQXJnIHN0b3JlQWRkciA9IGFkZHIobV92
YWx1ZSk7CkBAIC0xMDE3LDI5ICsxMDE2LDI4IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIEluc3QgY3JlYXRlU3RvcmUoQWlyOjpPcGNvZGUgbW92ZSwgVmFs
dWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCisgICAgSW5zdCBjcmVhdGVTdG9yZShBaXI6Oktp
bmQgbW92ZSwgVmFsdWUqIHZhbHVlLCBjb25zdCBBcmcmIGRlc3QpCiAgICAgewotICAgICAgICBp
ZiAoaW1tKHZhbHVlKSAmJiBpc1ZhbGlkRm9ybShtb3ZlLCBBcmc6OkltbSwgZGVzdC5raW5kKCkp
KQorICAgICAgICBpZiAoaW1tKHZhbHVlKSAmJiBpc1ZhbGlkRm9ybShtb3ZlLm9wY29kZSwgQXJn
OjpJbW0sIGRlc3Qua2luZCgpKSkKICAgICAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIGltbSh2YWx1ZSksIGRlc3QpOwogCiAgICAgICAgIHJldHVybiBJbnN0KG1vdmUsIG1fdmFs
dWUsIHRtcCh2YWx1ZSksIGRlc3QpOwogICAgIH0KICAgICAKLSAgICBBaXI6Ok9wY29kZSBzdG9y
ZU9wY29kZShXaWR0aCB3aWR0aCwgQmFuayBiYW5rLCBib29sIHJlbGVhc2UpCisgICAgQWlyOjpP
cGNvZGUgc3RvcmVPcGNvZGUoV2lkdGggd2lkdGgsIEJhbmsgYmFuaykKICAgICB7CiAgICAgICAg
IHN3aXRjaCAod2lkdGgpIHsKICAgICAgICAgY2FzZSBXaWR0aDg6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChiYW5rID09IEdQKTsKLSAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3Rv
cmVSZWw4IDogQWlyOjpTdG9yZTg7CisgICAgICAgICAgICByZXR1cm4gQWlyOjpTdG9yZTg7CiAg
ICAgICAgIGNhc2UgV2lkdGgxNjoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJhbmsgPT0g
R1ApOwotICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDE2IDogQWlyOjpTdG9y
ZTE2OworICAgICAgICAgICAgcmV0dXJuIEFpcjo6U3RvcmUxNjsKICAgICAgICAgY2FzZSBXaWR0
aDMyOgogICAgICAgICAgICAgc3dpdGNoIChiYW5rKSB7CiAgICAgICAgICAgICBjYXNlIEdQOgot
ICAgICAgICAgICAgICAgIHJldHVybiByZWxlYXNlID8gU3RvcmVSZWwzMiA6IE1vdmUzMjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZTMyOwogICAgICAgICAgICAgY2FzZSBGUDoKLSAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVsZWFzZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIE1vdmVGbG9hdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA0
Nyw5ICsxMDQ1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzNjRC
aXQoKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGJhbmspIHsKICAgICAgICAgICAgIGNhc2UgR1A6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbGVhc2UgPyBTdG9yZVJlbDY0IDogTW92ZTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gTW92ZTsKICAgICAgICAgICAgIGNhc2UgRlA6Ci0gICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlbGVhc2UpOwogICAgICAgICAgICAgICAgIHJldHVy
biBNb3ZlRG91YmxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDU3
LDI1ICsxMDU0LDMzIEBAIHByaXZhdGU6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfQogICAgIAotICAgIEFpcjo6T3Bjb2RlIHN0b3JlT3Bjb2RlKFZhbHVlKiB2
YWx1ZSkKKyAgICB2b2lkIGFwcGVuZFN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0
KQogICAgIHsKICAgICAgICAgTWVtb3J5VmFsdWUqIG1lbW9yeSA9IHZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWVtb3J5LT5pc1N0b3JlKCkpOwotICAg
ICAgICByZXR1cm4gc3RvcmVPcGNvZGUobWVtb3J5LT5hY2Nlc3NXaWR0aCgpLCBtZW1vcnktPmFj
Y2Vzc0JhbmsoKSwgbWVtb3J5LT5oYXNGZW5jZSgpKTsKLSAgICB9CiAKLSAgICBJbnN0IGNyZWF0
ZVN0b3JlKFZhbHVlKiB2YWx1ZSwgY29uc3QgQXJnJiBkZXN0KQotICAgIHsKLSAgICAgICAgQWly
OjpPcGNvZGUgbW92ZU9wY29kZSA9IHN0b3JlT3Bjb2RlKHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVN0b3JlKG1vdmVPcGNvZGUsIHZhbHVlLT5jaGlsZCgwKSwgZGVzdCk7CisgICAgICAg
IEFpcjo6S2luZCBraW5kOworICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtZW1vcnktPmFjY2Vzc0JhbmsoKSA9PSBHUCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgICAgICAgICAga2lu
ZCA9IE9QQ09ERV9GT1JfV0lEVEgoWGNoZywgbWVtb3J5LT5hY2Nlc3NXaWR0aCgpKTsKKyAgICAg
ICAgICAgICAgICBraW5kLmVmZmVjdHMgPSB0cnVlOworICAgICAgICAgICAgICAgIFRtcCBzd2Fw
VG1wID0gbV9jb2RlLm5ld1RtcChHUCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHJlbGF4ZWRN
b3ZlRm9yVHlwZShtZW1vcnktPmFjY2Vzc1R5cGUoKSksIHRtcChtZW1vcnktPmNoaWxkKDApKSwg
c3dhcFRtcCk7CisgICAgICAgICAgICAgICAgYXBwZW5kKGtpbmQsIHN3YXBUbXAsIGRlc3QpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAga2luZCA9IE9QQ09ERV9GT1JfV0lEVEgoU3RvcmVSZWwsIG1lbW9yeS0+YWNjZXNz
V2lkdGgoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAga2luZCA9IHN0b3JlT3Bjb2Rl
KG1lbW9yeS0+YWNjZXNzV2lkdGgoKSwgbWVtb3J5LT5hY2Nlc3NCYW5rKCkpOworICAgICAgICAK
KyAgICAgICAga2luZC5lZmZlY3RzIHw9IG1lbW9yeS0+dHJhcHMoKTsKKyAgICAgICAgCisgICAg
ICAgIGFwcGVuZChjcmVhdGVTdG9yZShraW5kLCBtZW1vcnktPmNoaWxkKDApLCBkZXN0KSk7CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIGFwcGVuZFN0
b3JlKEFyZ3MmJi4uLiBhcmdzKQotICAgIHsKLSAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdCht
X3ZhbHVlLCBjcmVhdGVTdG9yZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKSk7Ci0gICAg
fQotICAgIAogICAgIEFpcjo6T3Bjb2RlIG1vdmVGb3JUeXBlKFR5cGUgdHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTE1MSwxNSArMTE1NiwxNSBAQCBwcml2YXRlOgog
I2VuZGlmIC8vIEVOQUJMRShNQVNNX1BST0JFKQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJndW1lbnRzPgotICAgIHZvaWQgYXBwZW5kKEFpcjo6T3Bjb2RlIG9wY29kZSwgQXJndW1lbnRz
JiYuLi4gYXJndW1lbnRzKQorICAgIHZvaWQgYXBwZW5kKEFpcjo6S2luZCBraW5kLCBBcmd1bWVu
dHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQo
SW5zdChvcGNvZGUsIG1fdmFsdWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pKTsKKyAgICAgICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKEluc3Qoa2luZCwgbV92YWx1ZSwg
c3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLikpOwogICAgIH0KICAgICAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+Ci0gICAgdm9pZCBhcHBlbmRUcmFwcGlu
ZyhBaXI6Ok9wY29kZSBvcGNvZGUsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB2b2lk
IGFwcGVuZFRyYXBwaW5nKEFpcjo6S2luZCBraW5kLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewotICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFs
dWUsIG9wY29kZSwgbV92YWx1ZSwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4u
LikpOworICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IGtpbmQsIG1fdmFsdWUsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmQoSW5zdCYmIGluc3QpCkBAIC0xMjU0LDcgKzEy
NTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBWYWx1ZVJlcDo6U3RhY2tBcmd1bWVudDoKICAgICAgICAgICAgICAgICBhcmcgPSBBcmc6OmNh
bGxBcmcodmFsdWUucmVwKCkub2Zmc2V0RnJvbVNQKCkpOwotICAgICAgICAgICAgICAgIGFwcGVu
ZFN0b3JlKG1vdmVGb3JUeXBlKHZhbHVlLnZhbHVlKCktPnR5cGUoKSksIHZhbHVlLnZhbHVlKCks
IGFyZyk7CisgICAgICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBjcmVh
dGVTdG9yZShtb3ZlRm9yVHlwZSh2YWx1ZS52YWx1ZSgpLT50eXBlKCkpLCB2YWx1ZS52YWx1ZSgp
LCBhcmcpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDE0LDQ2
ICsyNDE5LDM4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBMb2FkOiB7
CiAgICAgICAgICAgICBNZW1vcnlWYWx1ZSogbWVtb3J5ID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFs
dWU+KCk7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBBaXI6Ok9vcHM7Ci0gICAg
ICAgICAgICBpZiAobWVtb3J5LT5oYXNGZW5jZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNo
IChtZW1vcnktPnR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgSW50MzI6Ci0gICAgICAg
ICAgICAgICAgICAgIG9wY29kZSA9IExvYWRBY3EzMjsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBJbnQ2NDoKLSAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlID0gTG9hZEFjcTY0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBtb3ZlRm9yVHlwZSht
ZW1vcnktPnR5cGUoKSk7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUs
IG9wY29kZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAg
ICAgICBBaXI6OktpbmQga2luZCA9IG1vdmVGb3JUeXBlKG1lbW9yeS0+dHlwZSgpKTsKKyAgICAg
ICAgICAgIGlmIChtZW1vcnktPmhhc0ZlbmNlKCkpCisgICAgICAgICAgICAgICAga2luZC5lZmZl
Y3RzID0gdHJ1ZTsKKyAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwga2lu
ZCwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIExvYWQ4Uzogewot
ICAgICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+
KCktPmhhc0ZlbmNlKCkgPyBMb2FkQWNxOFNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkOFNpZ25lZEV4
dGVuZFRvMzI7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29k
ZSwgbV92YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBB
aXI6OktpbmQga2luZCA9IExvYWQ4U2lnbmVkRXh0ZW5kVG8zMjsKKyAgICAgICAgICAgIGtpbmQu
ZWZmZWN0cyA9IG1fdmFsdWUtPmFzPE1lbW9yeVZhbHVlPigpLT5oYXNGZW5jZSgpOworICAgICAg
ICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVlLCBraW5kLCBtX3ZhbHVlLCBhZGRyKG1f
dmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGNhc2UgTG9hZDhaOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUg
PSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3E4IDogTG9h
ZDg7Ci0gICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIG9wY29kZSwgbV92
YWx1ZSwgYWRkcihtX3ZhbHVlKSwgdG1wKG1fdmFsdWUpKSk7CisgICAgICAgICAgICBBaXI6Oktp
bmQga2luZCA9IExvYWQ4OworICAgICAgICAgICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8
TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJ
bnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZT
OiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlW
YWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRBY3ExNlNpZ25lZEV4dGVuZFRvMzIgOiBMb2FkMTZT
aWduZWRFeHRlbmRUbzMyOwotICAgICAgICAgICAgYXBwZW5kKHRyYXBwaW5nSW5zdChtX3ZhbHVl
LCBvcGNvZGUsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOworICAgICAg
ICAgICAgQWlyOjpLaW5kIGtpbmQgPSBMb2FkMTZTaWduZWRFeHRlbmRUbzMyOworICAgICAgICAg
ICAga2luZC5lZmZlY3RzID0gbV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7
CisgICAgICAgICAgICBhcHBlbmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUs
IGFkZHIobV92YWx1ZSksIHRtcChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgY2FzZSBMb2FkMTZaOiB7Ci0gICAgICAgICAgICBBaXI6Ok9wY29k
ZSBvcGNvZGUgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1ZT4oKS0+aGFzRmVuY2UoKSA/IExvYWRB
Y3ExNiA6IExvYWQxNjsKLSAgICAgICAgICAgIGFwcGVuZCh0cmFwcGluZ0luc3QobV92YWx1ZSwg
b3Bjb2RlLCBtX3ZhbHVlLCBhZGRyKG1fdmFsdWUpLCB0bXAobV92YWx1ZSkpKTsKKyAgICAgICAg
ICAgIEFpcjo6S2luZCBraW5kID0gTG9hZDE2OworICAgICAgICAgICAga2luZC5lZmZlY3RzID0g
bV92YWx1ZS0+YXM8TWVtb3J5VmFsdWU+KCktPmhhc0ZlbmNlKCk7CisgICAgICAgICAgICBhcHBl
bmQodHJhcHBpbmdJbnN0KG1fdmFsdWUsIGtpbmQsIG1fdmFsdWUsIGFkZHIobV92YWx1ZSksIHRt
cChtX3ZhbHVlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMTcwNjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDQ0NSw2ICs0NDQ1LDE3IEBAIHZvaWQgdGVzdEZsb29yQXJnV2l0aEVmZmVjdGZ1bERvdWJs
ZUNvbnYKICAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIHN0YXRpY19jYXN0PGRvdWJsZT4o
Zmxvb3JmKGEpKSkpOwogfQogCitkb3VibGUgY29ycmVjdFNxcnQoZG91YmxlIHZhbHVlKQorewor
ICAgIGlmIChpc1g4NigpKSB7CisgICAgICAgIGRvdWJsZSByZXN1bHQ7CisgICAgICAgIGFzbSAo
InNxcnRzZCAlMSwgJTAiIDogIj14IihyZXN1bHQpIDogIngiKHZhbHVlKSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBzcXJ0KHZhbHVlKTsKK30KKwog
dm9pZCB0ZXN0U3FydEFyZyhkb3VibGUgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTQ0
NTUsNyArNDQ2Niw3IEBAIHZvaWQgdGVzdFNxcnRBcmcoZG91YmxlIGEpCiAgICAgICAgICAgICBw
cm9jLCBTcXJ0LCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCkpKTsK
IAotICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwg
c3FydChhKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihw
cm9jLCBhKSwgY29ycmVjdFNxcnQoYSkpKTsKIH0KIAogdm9pZCB0ZXN0U3FydEltbShkb3VibGUg
YSkKQEAgLTQ0NjcsNyArNDQ3OCw3IEBAIHZvaWQgdGVzdFNxcnRJbW0oZG91YmxlIGEpCiAgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgU3FydCwgT3JpZ2luKCksIGFyZ3VtZW50KSk7CiAKLSAgICBDSEVDSyhpc0lkZW50
aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIHNxcnQoYSkpKTsKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGNvcnJlY3RTcXJ0KGEpKSk7
CiB9CiAKIHZvaWQgdGVzdFNxcnRNZW0oZG91YmxlIGEpCkBAIC00NDgwLDcgKzQ0OTEsNyBAQCB2
b2lkIHRlc3RTcXJ0TWVtKGRvdWJsZSBhKQogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAogICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFNxcnQsIE9yaWdpbigpLCBs
b2FkRG91YmxlKSk7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYywgJmEpLCBzcXJ0KGEpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFu
ZFJ1bjxkb3VibGU+KHByb2MsICZhKSwgY29ycmVjdFNxcnQoYSkpKTsKIH0KIAogdm9pZCB0ZXN0
U3FydEFyZyhmbG9hdCBhKQpAQCAtNDQ5NCw3ICs0NTA1LDcgQEAgdm9pZCB0ZXN0U3FydEFyZyhm
bG9hdCBhKQogICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJv
YywgQml0d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwogICAgIHJvb3QtPmFwcGVuZE5ld0Nv
bnRyb2xWYWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CiAKLSAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxp
bnQzMl90PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3Fy
dChhKSkpKSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihw
cm9jLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKIH0KIAogdm9pZCB0ZXN0U3FydElt
bShmbG9hdCBhKQpAQCAtNDUwNiw3ICs0NTE3LDcgQEAgdm9pZCB0ZXN0U3FydEltbShmbG9hdCBh
KQogICAgIFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
d2lzZUNhc3QsIE9yaWdpbigpLCByZXN1bHQpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xW
YWx1ZShwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CiAKLSAgICBDSEVDSyhpc0lk
ZW50aWNhbChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90
PihhKSksIGJpdHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChhKSkp
KSk7CisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsKIH0KIAogdm9pZCB0ZXN0U3FydE1lbShmbG9h
dCBhKQpAQCAtNDUxOSw3ICs0NTMwLDcgQEAgdm9pZCB0ZXN0U3FydE1lbShmbG9hdCBhKQogICAg
IFZhbHVlKiByZXN1bHQzMiA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0d2lzZUNh
c3QsIE9yaWdpbigpLCByZXN1bHQpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNh
bChjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+
KHN0YXRpY19jYXN0PGZsb2F0PihzcXJ0KGEpKSkpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZhKSwgYml0d2lzZV9jYXN0PGludDMyX3Q+KHN0
YXRpY19jYXN0PGZsb2F0Pihjb3JyZWN0U3FydChhKSkpKSk7CiB9CiAKIHZvaWQgdGVzdFNxcnRB
cmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnNpb24oZmxvYXQgYSkKQEAgLTQ1MzUsNyArNDU0Niw3
IEBAIHZvaWQgdGVzdFNxcnRBcmdXaXRoVXNlbGVzc0RvdWJsZUNvbnZlcnMKICAgICBWYWx1ZSog
cmVzdWx0MzIgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEJpdHdpc2VDYXN0LCBPcmln
aW4oKSwgZmxvYXRSZXN1bHQpOwogICAgIHJvb3QtPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShwcm9j
LCBSZXR1cm4sIE9yaWdpbigpLCByZXN1bHQzMik7CiAKLSAgICBDSEVDSyhpc0lkZW50aWNhbChj
b21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsIGJpdHdpc2VfY2FzdDxpbnQzMl90PihhKSksIGJp
dHdpc2VfY2FzdDxpbnQzMl90PihzdGF0aWNfY2FzdDxmbG9hdD4oc3FydChhKSkpKSk7CisgICAg
Q0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4oYSkpLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGNvcnJlY3RTcXJ0KGEpKSkpKTsKIH0KIAogdm9pZCB0ZXN0U3FydEFyZ1dpdGhFZmZlY3RmdWxE
b3VibGVDb252ZXJzaW9uKGZsb2F0IGEpCkBAIC00NTU1LDggKzQ1NjYsOSBAQCB2b2lkIHRlc3RT
cXJ0QXJnV2l0aEVmZmVjdGZ1bERvdWJsZUNvbnZlCiAKICAgICBkb3VibGUgZWZmZWN0ID0gMDsK
ICAgICBpbnQzMl90IHJlc3VsdFZhbHVlID0gY29tcGlsZUFuZFJ1bjxpbnQzMl90Pihwcm9jLCBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4oYSksICZlZmZlY3QpOwotICAgIENIRUNLKGlzSWRlbnRpY2Fs
KHJlc3VsdFZhbHVlLCBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNx
cnQoYSkpKSkpOwotICAgIENIRUNLKGlzSWRlbnRpY2FsKGVmZmVjdCwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihzcXJ0KGEpKSkpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKHJlc3VsdFZhbHVlLCBiaXR3
aXNlX2Nhc3Q8aW50MzJfdD4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvcnJlY3RTcXJ0KGEpKSkpKTsK
KyAgICBkb3VibGUgZXhwZWN0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGNvcnJlY3RTcXJ0KGEp
KTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChlZmZlY3QsIGV4cGVjdGVkKSk7CiB9CiAKIHZvaWQg
dGVzdENvbXBhcmVUd29GbG9hdFRvRG91YmxlKGZsb2F0IGEsIGZsb2F0IGIpCkBAIC01NzkzLDYg
KzU4MDUsOCBAQCB2b2lkIHRlc3RTdG9yZVJlbEFkZExvYWRBY3EzMihpbnQgYW1vdW50CiAgICAg
ICAgIGNoZWNrVXNlc0luc3RydWN0aW9uKCpjb2RlLCAibGRhIik7CiAgICAgICAgIGNoZWNrVXNl
c0luc3RydWN0aW9uKCpjb2RlLCAic3RsIik7CiAgICAgfQorICAgIGlmIChpc1g4NigpKQorICAg
ICAgICBjaGVja1VzZXNJbnN0cnVjdGlvbigqY29kZSwgInhjaGciKTsKICAgICBDSEVDSyghaW52
b2tlPGludD4oKmNvZGUsIGFtb3VudCkpOwogICAgIENIRUNLKHNsb3QgPT0gMzcgKyBhbW91bnQp
OwogfQpAQCAtMTM5NzksNyArMTM5OTMsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ0xvYWQoKQogICAg
IHVuc2lnbmVkIHRyYXBzQ291bnQgPSAwOwogICAgIGZvciAoQWlyOjpCYXNpY0Jsb2NrKiBibG9j
ayA6IHByb2MuY29kZSgpKSB7CiAgICAgICAgIGZvciAoQWlyOjpJbnN0JiBpbnN0IDogKmJsb2Nr
KSB7Ci0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLnRyYXBzKQorICAgICAgICAgICAgaWYgKGlu
c3Qua2luZC5lZmZlY3RzKQogICAgICAgICAgICAgICAgIHRyYXBzQ291bnQrKzsKICAgICAgICAg
fQogICAgIH0KQEAgLTE0MDEyLDcgKzE0MDI2LDcgQEAgdm9pZCB0ZXN0VHJhcHBpbmdTdG9yZSgp
CiAgICAgdW5zaWduZWQgdHJhcHNDb3VudCA9IDA7CiAgICAgZm9yIChBaXI6OkJhc2ljQmxvY2sq
IGJsb2NrIDogcHJvYy5jb2RlKCkpIHsKICAgICAgICAgZm9yIChBaXI6Okluc3QmIGluc3QgOiAq
YmxvY2spIHsKLSAgICAgICAgICAgIGlmIChpbnN0LmtpbmQudHJhcHMpCisgICAgICAgICAgICBp
ZiAoaW5zdC5raW5kLmVmZmVjdHMpCiAgICAgICAgICAgICAgICAgdHJhcHNDb3VudCsrOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTQwMzgsNyArMTQwNTIsNyBAQCB2b2lkIHRlc3RUcmFwcGluZ0xv
YWRBZGRTdG9yZSgpCiAgICAgYm9vbCB0cmFwcyA9IGZhbHNlOwogICAgIGZvciAoQWlyOjpCYXNp
Y0Jsb2NrKiBibG9jayA6IHByb2MuY29kZSgpKSB7CiAgICAgICAgIGZvciAoQWlyOjpJbnN0JiBp
bnN0IDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBpZiAoaW5zdC5raW5kLnRyYXBzKQorICAgICAg
ICAgICAgaWYgKGluc3Qua2luZC5lZmZlY3RzKQogICAgICAgICAgICAgICAgIHRyYXBzID0gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTE0MDU4LDcgKzE0MDcyLDcgQEAgdm9pZCB0ZXN0VHJh
cHBpbmdMb2FkRENFKCkKICAgICB1bnNpZ25lZCB0cmFwc0NvdW50ID0gMDsKICAgICBmb3IgKEFp
cjo6QmFzaWNCbG9jayogYmxvY2sgOiBwcm9jLmNvZGUoKSkgewogICAgICAgICBmb3IgKEFpcjo6
SW5zdCYgaW5zdCA6ICpibG9jaykgewotICAgICAgICAgICAgaWYgKGluc3Qua2luZC50cmFwcykK
KyAgICAgICAgICAgIGlmIChpbnN0LmtpbmQuZWZmZWN0cykKICAgICAgICAgICAgICAgICB0cmFw
c0NvdW50Kys7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpcktpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyS2luZC5jcHAJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAg
dm9pZCBLaW5kOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50KG9w
Y29kZSk7CiAgICAgCiAgICAgQ29tbWFQcmludGVyIGNvbW1hKCIsICIsICI8Iik7Ci0gICAgaWYg
KHRyYXBzKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJUcmFwcyIpOworICAgIGlmIChlZmZl
Y3RzKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJFZmZlY3RzIik7CiAgICAgaWYgKGNvbW1h
LmRpZFByaW50KCkpCiAgICAgICAgIG91dC5wcmludCgiPiIpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgJKHJldmlzaW9uIDIxNzA2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UKIHN0cnVjdCBL
aW5kIHsKICAgICBLaW5kKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIDogb3Bjb2RlKG9wY29kZSkK
LSAgICAgICAgLCB0cmFwcyhmYWxzZSkKKyAgICAgICAgLCBlZmZlY3RzKGZhbHNlKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBLaW5kIHsKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3Bjb2RlID09IG90aGVyLm9wY29kZQotICAgICAgICAgICAgJiYgdHJhcHMgPT0gb3RoZXIudHJh
cHM7CisgICAgICAgICAgICAmJiBlZmZlY3RzID09IG90aGVyLmVmZmVjdHM7CiAgICAgfQogICAg
IAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QKQEAgLTY0LDcg
KzY0LDcgQEAgc3RydWN0IEtpbmQgewogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihvcGNvZGUpICsgKHN0
YXRpY19jYXN0PHVuc2lnbmVkPih0cmFwcykgPDwgMTYpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG9wY29kZSkgKyAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVmZmVjdHMp
IDw8IDE2KTsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
CkBAIC03NiwxNyArNzYsMTEgQEAgc3RydWN0IEtpbmQgewogICAgIAogICAgIE9wY29kZSBvcGNv
ZGU7CiAgICAgCi0gICAgLy8gVGhpcyBpcyBhbiBvcGNvZGUtYWdub3N0aWMgZmxhZyB0aGF0IGlu
ZGljYXRlcyB0aGF0IHdlIGV4cGVjdCB0aGF0IHRoaXMgaW5zdHJ1Y3Rpb24gd2lsbAotICAgIC8v
IHRyYXAuIFRoaXMgY2F1c2VzIHRoZSBjb21waWxlciB0byBhc3N1bWUgdGhhdCB0aGlzIHNpZGUt
ZXhpdHMgYW5kIHRoZXJlZm9yZSBoYXMgbm9uLWNvbnRyb2wKLSAgICAvLyBub24tYXJnIGVmZmVj
dHMuIFRoaXMgYWxzbyBjYXVzZXMgdGhlIGNvbXBpbGVyIHRvIHRlbGwgeW91IGFib3V0IGFsbCBv
ZiB0aGVzZSBpbnN0cnVjdGlvbnMuCi0gICAgLy8gTm90ZSB0aGF0IHRoaXMgaXMganVzdCBvbmUg
b2Ygc2V2ZXJhbCB3YXlzIG9mIHN1cHBvcnRpbmcgdHJhcHBpbmcgaW4gQWlyLCBhbmQgaXQncyB0
aGUgbGVzcwotICAgIC8vIHByZWNpc2UgdmFyaWFudCBiZWNhdXNlIGl0J3Mgb3JpZ2luLWJhc2Vk
LiBUaGlzIG1lYW5zIHRoYXQgaWYgYW4gaW5zdHJ1Y3Rpb24gd2FzIGZ1c2VkIG91dAotICAgIC8v
IG9mIEIzIHZhbHVlcyB0aGF0IGhhZCBkaWZmZXJlbnQgb3JpZ2lucywgdGhlbiB0aGUgb3JpZ2lu
IGF0IHdoaWNoIHlvdSdsbCBhcHBlYXIgdG8gdHJhcAotICAgIC8vIHdpbGwgYmUgc29tZXdoYXQg
cmFuZG9tLiBUaGUgdXBzaWRlIG9mIHRoaXMgYXBwcm9hY2ggaXMgdGhhdCBpdCBpbXBvc2VzIGJ5
IGZhciB0aGUgbGVhc3QKLSAgICAvLyBvdmVyaGVhZCBvbiB0aGUgY29tcGlsZXIuCi0gICAgLy8g
RklYTUU6IE1ha2UgdGhpcyBjb21wbGV0ZWx5IHdvcmsuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjY4OQotICAgIGJvb2wgdHJhcHMgOiAxOworICAg
IC8vIFRoaXMgaXMgYW4gb3Bjb2RlLWFnbm9zdGljIGZsYWcgdGhhdCBpbmRpY2F0ZXMgdGhhdCB3
ZSBleHBlY3QgdGhhdCB0aGlzIGluc3RydWN0aW9uIHdpbGwgZG8KKyAgICAvLyBhbnkgb2YgdGhl
IGZvbGxvd2luZzoKKyAgICAvLyAtIFRyYXAuCisgICAgLy8gLSBQZXJmb3JtIHNvbWUgbm9uLWFy
ZyBub24tY29udHJvbCBlZmZlY3QuCisgICAgYm9vbCBlZmZlY3RzIDogMTsKIH07CiAKIH0gfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyTG93ZXJBZnRlclJlZ0FsbG9jLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxvd2VyQWZ0ZXJSZWdBbGxvYy5jcHAJKHJldmlzaW9uIDIx
NzA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJBZnRlclJlZ0Fs
bG9jLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDggKzIyNyw4IEBAIHZvaWQgbG93ZXJBZnRl
clJlZ0FsbG9jKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgZW1p
dFNodWZmbGUoY29kZSwgcGFpcnMsIGdwU2NyYXRjaCwgZnBTY3JhdGNoLCBpbnN0Lm9yaWdpbikp
OwogCiAgICAgICAgICAgICAgICAgaW5zdCA9IGJ1aWxkQ0NhbGwoY29kZSwgaW5zdC5vcmlnaW4s
IGRlc3RpbmF0aW9ucyk7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZEtpbmQudHJhcHMpCi0gICAg
ICAgICAgICAgICAgICAgIGluc3Qua2luZC50cmFwcyA9IHRydWU7CisgICAgICAgICAgICAgICAg
aWYgKG9sZEtpbmQuZWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAgaW5zdC5raW5kLmVmZmVj
dHMgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgLy8gTm93IHdlIG5lZWQgdG8gZW1pdCBjb2Rl
IHRvIHJlc3RvcmUgcmVnaXN0ZXJzLgogICAgICAgICAgICAgICAgIHBhaXJzLnJlc2l6ZSgwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTG93ZXJNYWNyb3Mu
Y3BwCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxvd2VyTWFjcm9zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsOCArOTUsOCBAQCB2b2lkIGxv
d2VyTWFjcm9zKENvZGUmIGNvZGUpCiAgICAgICAgICAgICAgICAgQXJnIHJlc3VsdERzdCA9IHZh
bHVlLT50eXBlKCkgPT0gVm9pZCA/IEFyZygpIDogaW5zdC5hcmdzWzFdOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGluc3QgPSBidWlsZENDYWxsKGNvZGUsIGluc3Qub3JpZ2lu
LCBkZXN0aW5hdGlvbnMpOwotICAgICAgICAgICAgICAgIGlmIChvbGRLaW5kLnRyYXBzKQotICAg
ICAgICAgICAgICAgICAgICBpbnN0LmtpbmQudHJhcHMgPSB0cnVlOworICAgICAgICAgICAgICAg
IGlmIChvbGRLaW5kLmVmZmVjdHMpCisgICAgICAgICAgICAgICAgICAgIGluc3Qua2luZC5lZmZl
Y3RzID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIFRtcCByZXN1bHQgPSBjQ2FsbFJlc3VsdCh2
YWx1ZS0+dHlwZSgpKTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT50eXBlKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
cwkocmV2aXNpb24gMjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2Rlcwkod29ya2luZyBjb3B5KQpAQCAtNzIzLDkgKzcyMyw3IEBAIExvYWQ4IFU6
Rzo4LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgsIFRtcAogCi1Mb2FkQWNxOCBV
Okc6OCwgWkQ6RzozMiAvZWZmZWN0cwotICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRl
eCwgVG1wCithcm06IExvYWRBY3E4IFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCiAgICAgU2ltcGxl
QWRkciwgVG1wCiAKIFN0b3JlOCBVOkc6OCwgRDpHOjgKQEAgLTczNCwzOCArNzMyLDI4IEBAIFN0
b3JlOCBVOkc6OCwgRDpHOjgKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwgQWRk
cgogCi1TdG9yZVJlbDggVTpHOjgsIEQ6Rzo4IC9lZmZlY3RzCi0gICAgeDg2OiBUbXAsIEluZGV4
Ci0gICAgeDg2OiBUbXAsIEFkZHIKLSAgICB4ODY6IEltbSwgSW5kZXgKLSAgICB4ODY6IEltbSwg
QWRkcgorYXJtOiBTdG9yZVJlbDggVTpHOjgsIEQ6Rzo4IC9lZmZlY3RzCiAgICAgVG1wLCBTaW1w
bGVBZGRyCiAKIExvYWQ4U2lnbmVkRXh0ZW5kVG8zMiBVOkc6OCwgWkQ6RzozMgogICAgIEFkZHIs
IFRtcAogICAgIEluZGV4LCBUbXAKIAotTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBa
RDpHOjMyIC9lZmZlY3RzCi0gICAgeDg2OiBBZGRyLCBUbXAKLSAgICB4ODY6IEluZGV4LCBUbXAK
K2FybTogTG9hZEFjcThTaWduZWRFeHRlbmRUbzMyIFU6Rzo4LCBaRDpHOjMyIC9lZmZlY3RzCiAg
ICAgU2ltcGxlQWRkciwgVG1wCiAKIExvYWQxNiBVOkc6MTYsIFpEOkc6MzIKICAgICBBZGRyLCBU
bXAKICAgICBJbmRleCwgVG1wCiAKLUxvYWRBY3ExNiBVOkc6MTYsIFpEOkc6MzIgL2VmZmVjdHMK
LSAgICB4ODY6IEFkZHIsIFRtcAotICAgIHg4NjogSW5kZXgsIFRtcAorYXJtOiBMb2FkQWNxMTYg
VTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCiAgICAgU2ltcGxlQWRkciwgVG1wCiAKIExvYWQxNlNp
Z25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyCiAgICAgQWRkciwgVG1wCiAgICAgSW5kZXgs
IFRtcAogCi1Mb2FkQWNxMTZTaWduZWRFeHRlbmRUbzMyIFU6RzoxNiwgWkQ6RzozMiAvZWZmZWN0
cwotICAgIHg4NjogQWRkciwgVG1wCi0gICAgeDg2OiBJbmRleCwgVG1wCithcm06IExvYWRBY3Ex
NlNpZ25lZEV4dGVuZFRvMzIgVTpHOjE2LCBaRDpHOjMyIC9lZmZlY3RzCiAgICAgU2ltcGxlQWRk
ciwgVG1wCiAKIFN0b3JlMTYgVTpHOjE2LCBEOkc6MTYKQEAgLTc3NCwzNyArNzYyLDM3IEBAIFN0
b3JlMTYgVTpHOjE2LCBEOkc6MTYKICAgICB4ODY6IEltbSwgSW5kZXgKICAgICB4ODY6IEltbSwg
QWRkcgogCi1TdG9yZVJlbDE2IFU6RzoxNiwgRDpHOjE2IC9lZmZlY3RzCi0gICAgeDg2OiBUbXAs
IEluZGV4Ci0gICAgeDg2OiBUbXAsIEFkZHIKLSAgICB4ODY6IEltbSwgSW5kZXgKLSAgICB4ODY6
IEltbSwgQWRkcgorYXJtOiBTdG9yZVJlbDE2IFU6RzoxNiwgRDpHOjE2IC9lZmZlY3RzCiAgICAg
VG1wLCBTaW1wbGVBZGRyCiAKLUxvYWRBY3EzMiBVOkc6MzIsIFpEOkc6MzIgL2VmZmVjdHMKLSAg
ICB4ODY6IEFkZHIsIFRtcAotICAgIHg4NjogSW5kZXgsIFRtcAorYXJtOiBMb2FkQWNxMzIgVTpH
OjMyLCBaRDpHOjMyIC9lZmZlY3RzCiAgICAgU2ltcGxlQWRkciwgVG1wCiAKLVN0b3JlUmVsMzIg
VTpHOjMyLCBaRDpHOjMyIC9lZmZlY3RzCi0gICAgeDg2OiBUbXAsIEFkZHIKLSAgICB4ODY6IFRt
cCwgSW5kZXgKLSAgICB4ODY6IEltbSwgQWRkcgotICAgIHg4NjogSW1tLCBJbmRleAorYXJtOiBT
dG9yZVJlbDMyIFU6RzozMiwgWkQ6RzozMiAvZWZmZWN0cwogICAgIFRtcCwgU2ltcGxlQWRkcgog
Ci02NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2NCAvZWZmZWN0cwotICAgIHg4NjogQWRkciwg
VG1wCi0gICAgeDg2OiBJbmRleCwgVG1wCithcm02NDogTG9hZEFjcTY0IFU6Rzo2NCwgWkQ6Rzo2
NCAvZWZmZWN0cwogICAgIFNpbXBsZUFkZHIsIFRtcAogCi02NDogU3RvcmVSZWw2NCBVOkc6NjQs
IFpEOkc6NjQgL2VmZmVjdHMKLSAgICB4ODY6IFRtcCwgQWRkcgotICAgIHg4NjogVG1wLCBJbmRl
eAotICAgIHg4NjogSW1tLCBBZGRyCi0gICAgeDg2OiBJbW0sIEluZGV4Cithcm02NDogU3RvcmVS
ZWw2NCBVOkc6NjQsIFpEOkc6NjQgL2VmZmVjdHMKICAgICBUbXAsIFNpbXBsZUFkZHIKIAoreDg2
OiBYY2hnOCBVRDpHOjgsIFVEOkc6OCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwg
SW5kZXgKKworeDg2OiBYY2hnMTYgVUQ6RzoxNiwgVUQ6RzoxNiAvZWZmZWN0cworICAgIFRtcCwg
QWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2OiBYY2hnMzIgVUQ6RzozMiwgVUQ6RzozMiAvZWZm
ZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKworeDg2XzY0OiBYY2hnNjQgVUQ6
Rzo2NCwgVUQ6Rzo2NCAvZWZmZWN0cworICAgIFRtcCwgQWRkcgorICAgIFRtcCwgSW5kZXgKKwog
IyBUaGUgZmlyc3Qgb3BlcmFuZCBpcyByYXguCiAjIEZJWE1FOiBUaGlzIGZvcm11bGF0aW9uIG1l
YW5zIHRoYXQgdGhlIGJvb2xlYW4gcmVzdWx0IGNhbm5vdCBiZSBwdXQgaW4gZWF4LCBldmVuIHRo
b3VnaCBhbGwgdXNlcnMKICMgb2YgdGhpcyB3b3VsZCBiZSBPSyB3aXRoIHRoYXQuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclZhbGlkYXRlLmNwcAkocmV2aXNpb24g
MjE3MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJWYWxpZGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw4ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgU2h1ZmZsZToKICAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuJ3QgaGFuZGxlIHRyYXBwaW5nIHNodWZmbGVzIGJlY2F1c2Ugb2Yg
aG93IHdlIGxvd2VyIHRoZW0uIFRoYXQgY291bGQKLSAgICAgICAgICAgICAgICAgICAgLy8gYmUg
Zml4ZWQgdGhvdWdoLgotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSghaW5zdC5raW5kLnRy
YXBzLCAoIkF0ICIsIGluc3QsICIgaW4gIiwgKmJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAg
IC8vIGJlIGZpeGVkIHRob3VnaC4gRGl0dG8gZm9yIHNodWZmbGVzIHRoYXQgd291bGQgZG8gZmVu
Y2VzLCB3aGljaCBpcyB0aGUgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gdXNlIG9mIHRo
aXMgYml0LgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSghaW5zdC5raW5kLmVmZmVjdHMs
ICgiQXQgIiwgaW5zdCwgIiBpbiAiLCAqYmxvY2spKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL29wY29kZV9nZW5lcmF0b3IucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9vcGNvZGVfZ2VuZXJh
dG9yLnJiCShyZXZpc2lvbiAyMTcwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L29wY29kZV9nZW5lcmF0b3IucmIJKHdvcmtpbmcgY29weSkKQEAgLTExMjYsNyArMTEyNiw3IEBA
IHdyaXRlSCgiT3Bjb2RlR2VuZXJhdGVkIikgewogICAgIAogICAgIG91dHAucHV0cyAiYm9vbCBJ
bnN0OjpoYXNOb25BcmdOb25Db250cm9sRWZmZWN0cygpIgogICAgIG91dHAucHV0cyAieyIKLSAg
ICBvdXRwLnB1dHMgImlmIChraW5kLnRyYXBzKSIKKyAgICBvdXRwLnB1dHMgImlmIChraW5kLmVm
ZmVjdHMpIgogICAgIG91dHAucHV0cyAicmV0dXJuIHRydWU7IgogICAgIG91dHAucHV0cyAic3dp
dGNoIChraW5kLm9wY29kZSkgeyIKICAgICBmb3VuZFRydWUgPSBmYWxzZQpAQCAtMTE1NCw3ICsx
MTU0LDcgQEAgd3JpdGVIKCJPcGNvZGVHZW5lcmF0ZWQiKSB7CiAgICAgCiAgICAgb3V0cC5wdXRz
ICJib29sIEluc3Q6Omhhc05vbkFyZ0VmZmVjdHMoKSIKICAgICBvdXRwLnB1dHMgInsiCi0gICAg
b3V0cC5wdXRzICJpZiAoa2luZC50cmFwcykiCisgICAgb3V0cC5wdXRzICJpZiAoa2luZC5lZmZl
Y3RzKSIKICAgICBvdXRwLnB1dHMgInJldHVybiB0cnVlOyIKICAgICBvdXRwLnB1dHMgInN3aXRj
aCAoa2luZC5vcGNvZGUpIHsiCiAgICAgZm91bmRUcnVlID0gZmFsc2UK
</data>
<flag name="review"
          id="331643"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>