<?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>235886</bug_id>
          
          <creation_ts>2022-01-31 03:45:44 -0800</creation_ts>
          <short_desc>[RISCV64] Add remaining MacroAssemblerRISCV64 branching operations</short_desc>
          <delta_ts>2022-03-11 05:33:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>237775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>pmatos</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1835490</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-01-31 03:45:44 -0800</bug_when>
    <thetext>[RISCV64] Add remaining MacroAssemblerRISCV64 branching operations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835491</commentid>
    <comment_count>1</comment_count>
      <attachid>450399</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-01-31 03:46:25 -0800</bug_when>
    <thetext>Created attachment 450399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835759</commentid>
    <comment_count>2</comment_count>
      <attachid>450399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-31 16:18:33 -0800</bug_when>
    <thetext>Comment on attachment 450399
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835760</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 16:31:34 -0800</bug_when>
    <thetext>Committed r288856 (246612@main): &lt;https://commits.webkit.org/246612@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450399.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835761</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-31 16:32:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88301314&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450399</attachid>
            <date>2022-01-31 03:46:25 -0800</date>
            <delta_ts>2022-01-31 16:31:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235886-20220131124623.patch</filename>
            <type>text/plain</type>
            <size>17898</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTE1YTc2ZmEyMDk2YWMzNjI1ZjZmZGU2NWRkNjY0MGUwZDNmZDIxLi4yYjJlMDZjOWYzMDUwOTE0
ODQ4M2U3OWNhYmRjYjVlZDRkMjlkZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMi0wMS0zMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1JJU0NWNjRdIEFkZCByZW1haW5pbmcgTWFjcm9Bc3NlbWJsZXJSSVND
VjY0IGJyYW5jaGluZyBvcGVyYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU4ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBQcm92aWRlIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCBpbXBsZW1lbnRh
dGlvbnMgZm9yIHRoZSByZW1haW5pbmcKKyAgICAgICAgYnJhbmNoaW5nIG9wZXJhdGlvbnMuIFdo
ZW4gYnJhbmNoaW5nIG9uIG5vbi1vdmVybG93IGNvbmRpdGlvbnMsIHRoZQorICAgICAgICBpbXBs
ZW1lbnRhdGlvbnMgcmVtYWluIHByZXR0eSB0cml2aWFsLiBGb3IgdGhlIG92ZXJmbG93IGNvbmRp
dGlvbiwKKyAgICAgICAgYSBoZWxwZXIgbWV0aG9kIGlzIHByb3ZpZGVkIHRvIGNvdmVyIGRpZmZl
cmVudC1zaXplZCBvcGVyYXRpb25zIGFzIHdlbGwKKyAgICAgICAgYXMgb3BlcmF0aW9uLXNwZWNp
ZmljIGluc3RydWN0aW9uIHNlcXVlbmNlcy4KKworICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0Ojpi
cmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6YnJhbmNo
QWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFN1YjMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjpicmFuY2hTdWI2NCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6YnJhbmNoTXVsMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaE11bDY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJSSVNDVjY0OjpicmFuY2hOZWczMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyUklTQ1Y2NDo6YnJhbmNoTmVnNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclJJU0NWNjQ6OmJyYW5jaEZvckFyaXRobWV0aWNPdmVyZmxvdyk6CisKIDIwMjItMDEt
MzAgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBB
ZGQgR2VuZXJpY0hhc2hLZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCmluZGV4IGQyZDk4MjU0OTY0OGZhZTM4Njdl
MmYzY2ZiMzcyZTQyNmI5ZWE0MzQuLjM2NDY4NmRmZjY4OTk0ZGVhYTA0ZTk1NjYzNmFkNjJmMDJl
YzExNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJSSVNDVjY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaApAQCAtMjE1OSwxNyArMjE1OSwyNjIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzcywgaW1tKTsKICAgICB9CiAKLSAg
ICBNQUNST19BU1NFTUJMRVJfUklTQ1Y2NF9URU1QTEFURURfTk9PUF9NRVRIT0RfV0lUSF9SRVRV
Uk4oYnJhbmNoQWRkMzIsIEp1bXApOwotICAgIE1BQ1JPX0FTU0VNQkxFUl9SSVNDVjY0X1RFTVBM
QVRFRF9OT09QX01FVEhPRF9XSVRIX1JFVFVSTihicmFuY2hBZGQ2NCwgSnVtcCk7CisgICAgSnVt
cCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBkZXN0
LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpCisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoRm9yQXJpdGhtZXRpY092ZXJmbG93PDMyLCBBcml0aG1ldGljT3BlcmF0aW9uOjpB
ZGRpdGlvbj4ob3AxLCBvcDIsIGRlc3QpOworCisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERh
dGE+KCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHdJbnNuKHRlbXAuZGF0YSgpLCBvcDEsIG9w
Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCwgdGVtcC5kYXRh
KCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIHRlbXAuZGF0YSgp
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoQWRkMzIoY29uZCwgZGVzdCwgaW1tLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRm9yQXJpdGhtZXRpY092ZXJmbG93PDMy
LCBBcml0aG1ldGljT3BlcmF0aW9uOjpBZGRpdGlvbj4ob3AxLCBpbW0sIGRlc3QpOworCisgICAg
ICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGE+KCk7CisgICAgICAgIGlmICghSW1tOjppc1ZhbGlk
PEltbTo6SVR5cGU+KGltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbG9hZEltbWVkaWF0ZShp
bW0sIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHdJbnNuKHRlbXAu
ZGF0YSgpLCBvcDEsIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5hZGRpd0luc24odGVtcC5kYXRhKCksIG9wMSwgSW1tOjpJKGltbS5tX3ZhbHVl
KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCwgdGVtcC5kYXRh
KCkpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIHRlbXAuZGF0YSgp
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGF1dG8gdGVt
cCA9IHRlbXBzPERhdGEsIE1lbW9yeT4oKTsKKyAgICAgICAgYXV0byByZXNvbHV0aW9uID0gcmVz
b2x2ZUFkZHJlc3MoYWRkcmVzcywgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lmx3SW5zbih0ZW1wLm1lbW9yeSgpLCByZXNvbHV0aW9uLmJhc2UsIEltbTo6SShyZXNvbHV0aW9u
Lm9mZnNldCkpOwogCi0gICAgTUFDUk9fQVNTRU1CTEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1Bf
TUVUSE9EX1dJVEhfUkVUVVJOKGJyYW5jaFN1YjMyLCBKdW1wKTsKLSAgICBNQUNST19BU1NFTUJM
RVJfUklTQ1Y2NF9URU1QTEFURURfTk9PUF9NRVRIT0RfV0lUSF9SRVRVUk4oYnJhbmNoU3ViNjQs
IEp1bXApOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVy
biBicmFuY2hGb3JBcml0aG1ldGljT3ZlcmZsb3c8MzIsIEFyaXRobWV0aWNPcGVyYXRpb246OkFk
ZGl0aW9uPihkZXN0LCB0ZW1wLm1lbW9yeSgpLCBkZXN0KTsKIAotICAgIE1BQ1JPX0FTU0VNQkxF
Ul9SSVNDVjY0X1RFTVBMQVRFRF9OT09QX01FVEhPRF9XSVRIX1JFVFVSTihicmFuY2hNdWwzMiwg
SnVtcCk7Ci0gICAgTUFDUk9fQVNTRU1CTEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1BfTUVUSE9E
X1dJVEhfUkVUVVJOKGJyYW5jaE11bDY0LCBKdW1wKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRk
d0luc24odGVtcC5kYXRhKCksIGRlc3QsIHRlbXAubWVtb3J5KCkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5tYXNrUmVnaXN0ZXI8MzI+KGRlc3QsIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3RGaW5hbGl6ZShjb25kLCB0ZW1wLmRhdGEoKSk7CisgICAgfQogCi0gICAgTUFD
Uk9fQVNTRU1CTEVSX1JJU0NWNjRfVEVNUExBVEVEX05PT1BfTUVUSE9EX1dJVEhfUkVUVVJOKGJy
YW5jaE5lZzMyLCBKdW1wKTsKLSAgICBNQUNST19BU1NFTUJMRVJfUklTQ1Y2NF9URU1QTEFURURf
Tk9PUF9NRVRIT0RfV0lUSF9SRVRVUk4oYnJhbmNoTmVnNjQsIEp1bXApOworICAgIEp1bXAgYnJh
bmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRl
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwg
TWVtb3J5PigpOworICAgICAgICBsb2FkSW1tZWRpYXRlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5t
X3B0ciksIHRlbXAubWVtb3J5KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sd0luc24odGVtcC5k
YXRhKCksIHRlbXAubWVtb3J5KCksIEltbTo6STwwPigpKTsKKworICAgICAgICBpZiAoY29uZCA9
PSBPdmVyZmxvdykgeworICAgICAgICAgICAgYXV0byBicmFuY2ggPSBicmFuY2hGb3JBcml0aG1l
dGljT3ZlcmZsb3c8MzIsIEFyaXRobWV0aWNPcGVyYXRpb246OkFkZGl0aW9uPih0ZW1wLmRhdGEo
KSwgaW1tLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgICAgICBsb2FkSW1tZWRpYXRlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIHRlbXAubWVtb3J5KCkpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3dJbnNuKHRlbXAubWVtb3J5KCksIHRlbXAuZGF0YSgpLCBJbW06OlM8MD4oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFJbW06
OmlzVmFsaWQ8SW1tOjpJVHlwZT4oaW1tLm1fdmFsdWUpKSB7CisgICAgICAgICAgICBsb2FkSW1t
ZWRpYXRlKGltbSwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR3
SW5zbih0ZW1wLmRhdGEoKSwgdGVtcC5kYXRhKCksIHRlbXAubWVtb3J5KCkpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl3SW5zbih0ZW1wLmRhdGEoKSwgdGVt
cC5kYXRhKCksIEltbTo6SShpbW0ubV92YWx1ZSkpOworCisgICAgICAgIGxvYWRJbW1lZGlhdGUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnN3SW5zbih0ZW1wLm1lbW9yeSgpLCB0ZW1wLmRhdGEoKSwgSW1tOjpTPDA+KCkp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIHRlbXAuZGF0YSgpKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVz
dGVkSW1tMzIgaW1tLCBBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBhdXRvIHRlbXAg
PSB0ZW1wczxEYXRhLCBNZW1vcnk+KCk7CisgICAgICAgIGF1dG8gcmVzb2x1dGlvbiA9IHJlc29s
dmVBZGRyZXNzKGFkZHJlc3MsIHRlbXAubWVtb3J5KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5s
d0luc24odGVtcC5kYXRhKCksIHJlc29sdXRpb24uYmFzZSwgSW1tOjpJKHJlc29sdXRpb24ub2Zm
c2V0KSk7CisKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIGF1
dG8gYnJhbmNoID0gYnJhbmNoRm9yQXJpdGhtZXRpY092ZXJmbG93PDMyLCBBcml0aG1ldGljT3Bl
cmF0aW9uOjpBZGRpdGlvbj4odGVtcC5kYXRhKCksIGltbSwgdGVtcC5kYXRhKCkpOworICAgICAg
ICAgICAgcmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNzKGFkZHJlc3MsIHRlbXAubWVtb3J5KCkp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3dJbnNuKHJlc29sdXRpb24uYmFzZSwgdGVtcC5k
YXRhKCksIEltbTo6UyhyZXNvbHV0aW9uLm9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghSW1tOjppc1ZhbGlkPEltbTo6SVR5cGU+
KGltbS5tX3ZhbHVlKSkgeworICAgICAgICAgICAgbG9hZEltbWVkaWF0ZShpbW0sIHRlbXAubWVt
b3J5KCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkd0luc24odGVtcC5kYXRhKCksIHRl
bXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5hZGRpd0luc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCBJbW06OkkoaW1t
Lm1fdmFsdWUpKTsKKworICAgICAgICByZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3MoYWRkcmVz
cywgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnN3SW5zbihyZXNvbHV0aW9u
LmJhc2UsIHRlbXAuZGF0YSgpLCBJbW06OlMocmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3RGaW5hbGl6ZShjb25kLCB0ZW1wLmRhdGEoKSk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hBZGQ2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25k
LCBkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpCisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoRm9yQXJpdGhtZXRpY092ZXJmbG93PDY0LCBBcml0aG1ldGljT3BlcmF0
aW9uOjpBZGRpdGlvbj4ob3AxLCBvcDIsIGRlc3QpOworCisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXpl
KGNvbmQsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2hBZGQ2NChjb25kLCBkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoQWRkNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3Ax
LCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAo
Y29uZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hGb3JBcml0aG1ldGlj
T3ZlcmZsb3c8NjQsIEFyaXRobWV0aWNPcGVyYXRpb246OkFkZGl0aW9uPihvcDEsIGltbSwgZGVz
dCk7CisKKyAgICAgICAgaWYgKCFJbW06OmlzVmFsaWQ8SW1tOjpJVHlwZT4oaW1tLm1fdmFsdWUp
KSB7CisgICAgICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigpOworICAgICAgICAgICAg
bG9hZEltbWVkaWF0ZShpbW0sIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZEluc24oZGVzdCwgb3AxLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaUluc24oZGVzdCwgb3AxLCBJbW06OkkoaW1tLm1fdmFsdWUp
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3RGaW5hbGl6ZShjb25kLCBkZXN0KTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMy
KGNvbmQsIGRlc3QsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hTdWIzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hGb3JBcml0aG1ldGljT3ZlcmZsb3c8MzIsIEFyaXRobWV0aWNP
cGVyYXRpb246OlN1YnRyYWN0aW9uPihvcDEsIG9wMiwgZGVzdCk7CisKKyAgICAgICAgYXV0byB0
ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Vid0luc24odGVtcC5k
YXRhKCksIG9wMSwgb3AyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWFza1JlZ2lzdGVyPDMyPihk
ZXN0LCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0RmluYWxpemUoY29u
ZCwgdGVtcC5kYXRhKCkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBkZXN0LCBpbW0sIGRlc3QpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
b3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgb3AxLCBUcnVzdGVkSW1tMzIoLWltbS5tX3ZhbHVlKSwg
ZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hTdWI2NChSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBicmFuY2hTdWI2NChjb25kLCBkZXN0LCBzcmMsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3Rl
cklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRm9yQXJpdGhtZXRpY092ZXJmbG93PDY0
LCBBcml0aG1ldGljT3BlcmF0aW9uOjpTdWJ0cmFjdGlvbj4ob3AxLCBvcDIsIGRlc3QpOworCisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1Ykluc24oZGVzdCwgb3AxLCBvcDIpOworICAgICAgICByZXR1
cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoU3ViNjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hTdWI2NChjb25kLCBkZXN0LCBp
bW0sIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViNjQoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoQWRkNjQoY29uZCwgb3AxLCBUcnVzdGVkSW1t
MzIoLWltbS5tX3ZhbHVlKSwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hNdWwzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBkZXN0LCBzcmMsIGRlc3QpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRm9yQXJp
dGhtZXRpY092ZXJmbG93PDMyLCBBcml0aG1ldGljT3BlcmF0aW9uOjpNdWx0aXBsaWNhdGlvbj4o
b3AxLCBvcDIsIGRlc3QpOworCisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGEsIE1lbW9y
eT4oKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2lnbkV4dGVuZDwzMj4odGVtcC5tZW1vcnkoKSwg
b3AxKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2lnbkV4dGVuZDwzMj4odGVtcC5kYXRhKCksIG9w
Mik7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bEluc24odGVtcC5kYXRhKCksIHRlbXAubWVtb3J5
KCksIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWFza1JlZ2lzdGVyPDMyPihk
ZXN0LCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0RmluYWxpemUoY29u
ZCwgdGVtcC5kYXRhKCkpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBkZXN0LCBpbW0sIGRlc3QpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
b3AxLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoY29uZCA9PSBPdmVyZmxvdykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hGb3JBcml0aG1l
dGljT3ZlcmZsb3c8MzIsIEFyaXRobWV0aWNPcGVyYXRpb246Ok11bHRpcGxpY2F0aW9uPihvcDEs
IGltbSwgZGVzdCk7CisKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwgTWVtb3J5Pigp
OworICAgICAgICBtX2Fzc2VtYmxlci5zaWduRXh0ZW5kPDMyPih0ZW1wLm1lbW9yeSgpLCBvcDEp
OworICAgICAgICBsb2FkSW1tZWRpYXRlKGltbSwgdGVtcC5kYXRhKCkpOworICAgICAgICBtX2Fz
c2VtYmxlci5tdWxJbnNuKHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpLCB0ZW1wLmRhdGEoKSk7
CisgICAgICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCwgdGVtcC5kYXRhKCkp
OworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIHRlbXAuZGF0YSgpKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE11bDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aE11bDY0KGNvbmQsIGRlc3QsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hN
dWw2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hGb3JBcml0aG1ldGljT3ZlcmZsb3c8NjQsIEFyaXRo
bWV0aWNPcGVyYXRpb246Ok11bHRpcGxpY2F0aW9uPihvcDEsIG9wMiwgZGVzdCk7CisKKyAgICAg
ICAgbV9hc3NlbWJsZXIubXVsSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0RmluYWxpemUoY29uZCwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hN
dWw2NChSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDY0KGNvbmQsIGRlc3QsIGltbSwg
ZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hNdWw2NChSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KQorICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaEZvckFyaXRobWV0aWNPdmVyZmxvdzw2NCwgQXJpdGhtZXRpY09wZXJhdGlvbjo6TXVsdGlw
bGljYXRpb24+KG9wMSwgaW1tLCBkZXN0KTsKKworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxE
YXRhPigpOworICAgICAgICBsb2FkSW1tZWRpYXRlKGltbSwgdGVtcC5kYXRhKCkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tdWxJbnNuKGRlc3QsIG9wMSwgdGVtcC5kYXRhKCkpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoVGVzdEZpbmFsaXplKGNvbmQsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoTmVnMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIFJJU0NWNjRSZWdpc3RlcnM6Onplcm8s
IHJlZywgcmVnKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzY0KFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hTdWI2
NChjb25kLCBSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJvLCByZWcsIHJlZyk7CisgICAgfQogCiAgICAg
SnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBU
cnVzdGVkSW1tMzIgaW1tID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CkBAIC0zMDI1LDYgKzMy
NzAsMTIgQEAgcHVibGljOgogICAgIE1BQ1JPX0FTU0VNQkxFUl9SSVNDVjY0X1RFTVBMQVRFRF9O
T09QX01FVEhPRChtb3ZlRG91YmxlQ29uZGl0aW9uYWxseVRlc3Q2NCk7CiAKIHByaXZhdGU6Cisg
ICAgZW51bSBjbGFzcyBBcml0aG1ldGljT3BlcmF0aW9uIHsKKyAgICAgICAgQWRkaXRpb24sCisg
ICAgICAgIFN1YnRyYWN0aW9uLAorICAgICAgICBNdWx0aXBsaWNhdGlvbiwKKyAgICB9OworCiAg
ICAgc3RydWN0IEltbSB7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHVz
aW5nIEVuYWJsZUlmSW50ZWdlciA9IHN0ZDo6ZW5hYmxlX2lmX3Q8KHN0ZDo6aXNfc2FtZV92PFQs
IGludDMyX3Q+IHx8IHN0ZDo6aXNfc2FtZV92PFQsIGludDY0X3Q+KT47CkBAIC0zMjA1LDYgKzM0
NTYsMTA1IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dW5zaWduZWQgYml0U2l6ZSwgQXJpdGhtZXRpY09wZXJhdGlvbiBhcml0aG1ldGljT3Bl
cmF0aW9uLCB0eXBlbmFtZSBPcDJUeXBlPgorICAgIEp1bXAgYnJhbmNoRm9yQXJpdGhtZXRpY092
ZXJmbG93KFJlZ2lzdGVySUQgb3AxLCBPcDJUeXBlIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChiaXRTaXplID09IDMyIHx8IGJpdFNpemUgPT0gNjQp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PE9wMlR5cGUsIFJlZ2lzdGVy
SUQ+IHx8IHN0ZDo6aXNfc2FtZV92PE9wMlR5cGUsIFRydXN0ZWRJbW0zMj4pOworICAgICAgICBh
dXRvIHRlbXAgPSB0ZW1wczxEYXRhLCBNZW1vcnk+KCk7CisKKyAgICAgICAgaWYgY29uc3RleHBy
IChiaXRTaXplID09IDMyKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcDEgPT0gdGVt
cC5kYXRhKCkgfHwgb3AxICE9IHRlbXAubWVtb3J5KCkpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc2lnbkV4dGVuZDwzMj4odGVtcC5kYXRhKCksIG9wMSk7CisKKyAgICAgICAgICAgIGlmIGNv
bnN0ZXhwciAoIXN0ZDo6aXNfc2FtZV92PE9wMlR5cGUsIFRydXN0ZWRJbW0zMj4pIHsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvcDIgPT0gdGVtcC5tZW1vcnkoKSB8fCBvcDEgIT0g
dGVtcC5kYXRhKCkpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNpZ25FeHRlbmQ8MzI+
KHRlbXAubWVtb3J5KCksIG9wMik7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBsb2FkSW1tZWRpYXRlKG9wMiwgdGVtcC5tZW1vcnkoKSk7CisKKyAgICAgICAgICAgIHZvaWQg
KFJJU0NWNjRBc3NlbWJsZXI6OipvcCkoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCkgPQorICAgICAgICAgICAgICAgIFtdIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChh
cml0aG1ldGljT3BlcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhtZXRp
Y09wZXJhdGlvbjo6QWRkaXRpb246CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJlJJ
U0NWNjRBc3NlbWJsZXI6OmFkZEluc247CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQXJpdGht
ZXRpY09wZXJhdGlvbjo6U3VidHJhY3Rpb246CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gJlJJU0NWNjRBc3NlbWJsZXI6OnN1Ykluc247CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
QXJpdGhtZXRpY09wZXJhdGlvbjo6TXVsdGlwbGljYXRpb246CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gJlJJU0NWNjRBc3NlbWJsZXI6Om11bEluc247CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7CisKKyAgICAgICAgICAgIGlmIChkZXN0ID09IHRl
bXAuZGF0YSgpIHx8IGRlc3QgPT0gdGVtcC5tZW1vcnkoKSkgeworICAgICAgICAgICAgICAgIFJl
Z2lzdGVySUQgb3RoZXJUZW1wID0gKGRlc3QgPT0gdGVtcC5kYXRhKCkpID8gdGVtcC5tZW1vcnko
KSA6IHRlbXAuZGF0YSgpOworICAgICAgICAgICAgICAgIChtX2Fzc2VtYmxlci4qb3ApKGRlc3Qs
IHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zaWduRXh0ZW5kPDMyPihvdGhlclRlbXAsIGRlc3QpOworICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24ob3RoZXJUZW1wLCBkZXN0LCBvdGhlclRlbXApOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1hc2tSZWdpc3RlcjwzMj4oZGVzdCwgZGVzdCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VCcmFuY2goTm90RXF1YWwsIG90aGVyVGVtcCwgUklTQ1Y2NFJlZ2lz
dGVyczo6emVybyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIChtX2Fzc2VtYmxlci4q
b3ApKHRlbXAuZGF0YSgpLCB0ZW1wLmRhdGEoKSwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5tYXNrUmVnaXN0ZXI8MzI+KGRlc3QsIHRlbXAuZGF0YSgpKSwKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNpZ25FeHRlbmQ8MzI+KHRlbXAubWVtb3J5KCksIHRlbXAuZGF0
YSgpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlQnJhbmNoKE5vdEVxdWFsLCB0ZW1wLmRhdGEo
KSwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0FTU0VSVChv
cDEgIT0gdGVtcC5kYXRhKCkgJiYgb3AxICE9IHRlbXAubWVtb3J5KCkpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChkZXN0ICE9IHRlbXAuZGF0YSgpICYmIGRlc3QgIT0gdGVtcC5tZW1vcnkoKSk7
CisKKyAgICAgICAgUmVnaXN0ZXJJRCByb3AyOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6
aXNfc2FtZV92PE9wMlR5cGUsIFRydXN0ZWRJbW0zMj4pIHsKKyAgICAgICAgICAgIGxvYWRJbW1l
ZGlhdGUob3AyLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgICAgIHJvcDIgPSB0ZW1wLm1lbW9y
eSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3AyICE9
IHRlbXAuZGF0YSgpICYmIG9wMiAhPSB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgICAgIHJvcDIg
PSBvcDI7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGFyaXRobWV0aWNPcGVyYXRpb24p
IHsKKyAgICAgICAgY2FzZSBBcml0aG1ldGljT3BlcmF0aW9uOjpBZGRpdGlvbjoKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0ICYmIHJvcDIgPT0gZGVzdCkgeworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbGlJbnNuPDE+KHRlbXAubWVtb3J5KCksIGRlc3QpOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24odGVtcC5kYXRhKCksIHRlbXAubWVt
b3J5KCksIGRlc3QpOworICAgICAgICAgICAgICAgIG1vdmUodGVtcC5tZW1vcnkoKSwgZGVzdCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24odGVtcC5kYXRhKCksIG9wMSwgcm9wMik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yaUluc24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCBJbW06Okk8LTE+KCkpOworCisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkSW5zbihkZXN0LCBvcDEsIHJvcDIpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24odGVtcC5tZW1vcnkoKSwgKG9wMSA9PSBkZXN0
KSA/IHJvcDIgOiBvcDEsIGRlc3QpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZElu
c24odGVtcC5kYXRhKCksIHRlbXAuZGF0YSgpLCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiBtYWtlQnJhbmNoKExlc3NUaGFuLCB0ZW1wLmRhdGEoKSwg
UklTQ1Y2NFJlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBcml0aG1l
dGljT3BlcmF0aW9uOjpTdWJ0cmFjdGlvbjoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG9w
MSA9PSBkZXN0ICYmIHJvcDIgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgIG1vdmUoUklTQ1Y2
NFJlZ2lzdGVyczo6emVybywgZGVzdCk7CisgICAgICAgICAgICAgICAgbW92ZShSSVNDVjY0UmVn
aXN0ZXJzOjp6ZXJvLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24odGVtcC5kYXRhKCksIG9wMSwgcm9wMik7CisK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJJbnNuKGRlc3QsIG9wMSwgcm9wMik7Cisg
ICAgICAgICAgICAgICAgaWYgKG9wMSA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvckluc24odGVtcC5tZW1vcnkoKSwgcm9wMiwgZGVzdCk7CisgICAgICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmlJbnNuKHRlbXAubWVtb3J5KCksIHRlbXAubWVtb3J5
KCksIEltbTo6STwtMT4oKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24odGVtcC5tZW1vcnkoKSwgb3AxLCBkZXN0KTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKHRlbXAuZGF0YSgpLCB0ZW1wLmRhdGEo
KSwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbWFr
ZUJyYW5jaChMZXNzVGhhbiwgdGVtcC5kYXRhKCksIFJJU0NWNjRSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgQXJpdGhtZXRpY09wZXJhdGlvbjo6TXVsdGlwbGljYXRp
b246CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWxoSW5zbih0ZW1wLmRhdGEoKSwgb3AxLCBy
b3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bEluc24oZGVzdCwgb3AxLCByb3AyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYWlJbnNuPDB4M2Y+KHRlbXAubWVtb3J5KCksIGRl
c3QpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VCcmFuY2goTm90RXF1YWwsIHRlbXAuZGF0YSgp
LCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGFyZUZp
bmFsaXplKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsaHMsIFJlZ2lzdGVy
SUQgcmhzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGNvbmQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>