<?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>32768</bug_id>
          
          <creation_ts>2009-12-18 23:04:44 -0800</creation_ts>
          <short_desc>Split QueueStatus server into modules</short_desc>
          <delta_ts>2009-12-28 23:41:20 -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>Tools / Tests</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>evan</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173483</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-18 23:04:44 -0800</bug_when>
    <thetext>One monolithic file is no good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173484</commentid>
    <comment_count>1</comment_count>
      <attachid>45225</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-18 23:05:29 -0800</bug_when>
    <thetext>Created attachment 45225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173485</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 23:06:20 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45225 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173486</commentid>
    <comment_count>3</comment_count>
      <attachid>45225</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-18 23:11:16 -0800</bug_when>
    <thetext>Comment on attachment 45225
Patch

I dont&apos; really know the patterns to comment.  This looks better than what we had.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173507</commentid>
    <comment_count>4</comment_count>
    <who name="Evan Martin">evan</who>
    <bug_when>2009-12-19 04:02:57 -0800</bug_when>
    <thetext>This would be easier to review if you made each file a derivative of the original file.  Hard to convince git to do this.  One way is
a) cp origin-file new-file1; cp origin-file new-file2; etc.  git add, commit -a, svn dcommit.
b) now do your edits and let us review the patch.

This LGTM though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175416</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 22:40:55 -0800</bug_when>
    <thetext>Attachment 45225 was posted by a committer and has review+, assigning to Adam Barth for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175451</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 23:41:07 -0800</bug_when>
    <thetext>Looks like this was already landed as bug 52381.  Silly Adam. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175452</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-12-28 23:41:20 -0800</bug_when>
    <thetext>I meant landed as r52381.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45225</attachid>
            <date>2009-12-18 23:05:29 -0800</date>
            <delta_ts>2009-12-18 23:11:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32768-20091218230527.patch</filename>
            <type>text/plain</type>
            <size>28073</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzZDM0Zjg0Li4wZjRhZjM2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMDktMTIt
MTggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBRdWV1ZVN0YXR1cyBzZXJ2ZXIgaW50
byBtb2R1bGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjc2OAorCisgICAgICAgIE9uZSBtb25vbGl0aGljIGZpbGUgaXMgbm8gZ29vZC4KKworICAg
ICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2FwcC55YW1sOgorICAgICAgICAqIFF1ZXVlU3RhdHVz
U2VydmVyL2hhbmRsZXJzL19faW5pdF9fLnB5OiBDb3BpZWQgZnJvbSBXZWJLaXRUb29scy9RdWV1
ZVN0YXR1c1NlcnZlci9maWx0ZXJzL19faW5pdF9fLnB5LgorICAgICAgICAqIFF1ZXVlU3RhdHVz
U2VydmVyL2hhbmRsZXJzL3BhdGNoc3RhdHVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBRdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy9yZWNlbnRzdGF0dXMucHk6IEFkZGVkLgorICAgICAgICAqIFF1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3Nob3dyZXN1bHRzLnB5OiBBZGRlZC4KKyAgICAgICAg
KiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9zdGF0dXNidWJibGUucHk6IEFkZGVkLgorICAg
ICAgICAqIFF1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weTogQWRkZWQu
CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvbWFpbi5weTogQWRkZWQuCisgICAgICAgICog
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwucHk6IEFkZGVkLgorICAgICAgICAqIFF1ZXVlU3RhdHVz
U2VydmVyL3F1ZXVlX3N0YXR1cy5weTogUmVtb3ZlZC4KKworMjAwOS0xMi0xOCAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IEVyaWMg
U2VpZGVsLgogCiAgICAgICAgIFJlbmFtZWQgV29ya1F1ZXVlIHRvIFF1ZXVlRW5naW5lLiAgV29y
a1F1ZXVlIGlzIG5vdCBhIHF1ZXVlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvUXVldWVTdGF0
dXNTZXJ2ZXIvYXBwLnlhbWwgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9hcHAueWFt
bAppbmRleCAyNzU2MTEyLi5mNmZmODcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9hcHAueWFtbAorKysgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9h
cHAueWFtbApAQCAtOCw0ICs4LDQgQEAgaGFuZGxlcnM6CiAgIHN0YXRpY19kaXI6IHN0eWxlc2hl
ZXRzCiAKIC0gdXJsOiAvLioKLSAgc2NyaXB0OiBxdWV1ZV9zdGF0dXMucHkKKyAgc2NyaXB0OiBt
YWluLnB5CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9fX2luaXRfXy5weSBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL19f
aW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNjViZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9f
X2luaXRfXy5weQpAQCAtMCwwICsxIEBACisjIFJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNo
IHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGUgZmlsZXMKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3BhdGNoc3RhdHVzLnB5IGIvV2ViS2l0VG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvcGF0Y2hzdGF0dXMucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzNhZTUzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3BhdGNoc3RhdHVzLnB5CkBAIC0wLDAgKzEs
NDAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1w
b3J0IHdlYmFwcAorCitmcm9tIG1vZGVsIGltcG9ydCBRdWV1ZVN0YXR1cworCisKK2NsYXNzIFBh
dGNoU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdldChzZWxmLCBxdWV1
ZV9uYW1lLCBhdHRhY2htZW50X2lkKToKKyAgICAgICAgc3RhdHVzZXMgPSBRdWV1ZVN0YXR1cy5h
bGwoKS5maWx0ZXIoJ3F1ZXVlX25hbWUgPScsIHF1ZXVlX25hbWUpLmZpbHRlcignYWN0aXZlX3Bh
dGNoX2lkID0nLCBpbnQoYXR0YWNobWVudF9pZCkpLm9yZGVyKCctZGF0ZScpLmZldGNoKDEpCisg
ICAgICAgIGlmIG5vdCBzdGF0dXNlczoKKyAgICAgICAgICAgIHNlbGYuZXJyb3IoNDA0KQorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHN0YXR1c2Vz
WzBdLm1lc3NhZ2UpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9o
YW5kbGVycy9yZWNlbnRzdGF0dXMucHkgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9o
YW5kbGVycy9yZWNlbnRzdGF0dXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMDk2NDhiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL2hhbmRsZXJzL3JlY2VudHN0YXR1cy5weQpAQCAtMCwwICsxLDU2IEBACisjIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKK2Zyb20g
Z29vZ2xlLmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCitmcm9tIG1vZGVs
IGltcG9ydCBRdWV1ZVN0YXR1cworCitjbGFzcyBSZWNlbnRTdGF0dXMod2ViYXBwLlJlcXVlc3RI
YW5kbGVyKToKKyAgICBkZWYgX3RpdGxlX2Nhc2Uoc2VsZiwgc3RyaW5nKToKKyAgICAgICAgd29y
ZHMgPSBzdHJpbmcuc3BsaXQoIiAiKQorICAgICAgICB3b3JkcyA9IG1hcChsYW1iZGEgd29yZDog
d29yZC5jYXBpdGFsaXplKCksIHdvcmRzKQorICAgICAgICByZXR1cm4gIiAiLmpvaW4od29yZHMp
CisKKyAgICBkZWYgX3ByZXR0eV9xdWV1ZV9uYW1lKHNlbGYsIHF1ZXVlX25hbWUpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fdGl0bGVfY2FzZShxdWV1ZV9uYW1lLnJlcGxhY2UoIi0iLCAiICIpKQor
CisgICAgIyBXZSBjb3VsZCBjaGFuZ2UgIi8iIHRvIGp1c3QgcmVkaXJlY3QgdG8gL3F1ZXVlLXN0
YXR1cy9jb21taXQtcXVldWUgaW4gdGhlIGZ1dHVyZQorICAgICMgYXQgd2hpY2ggcG9pbnQgd2Ug
d291bGQgbm90IG5lZWQgYSBkZWZhdWx0IHZhbHVlIGZvciBxdWV1ZV9uYW1lIGhlcmUuCisgICAg
ZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1lPSJjb21taXQtcXVldWUiKToKKyAgICAgICAgc3RhdHVz
ZXNfcXVlcnkgPSBRdWV1ZVN0YXR1cy5hbGwoKS5maWx0ZXIoInF1ZXVlX25hbWUgPSIsIHF1ZXVl
X25hbWUpLm9yZGVyKCItZGF0ZSIpCisgICAgICAgIHN0YXR1c2VzID0gc3RhdHVzZXNfcXVlcnku
ZmV0Y2goNikKKyAgICAgICAgaWYgbm90IHN0YXR1c2VzOgorICAgICAgICAgICAgcmV0dXJuIHNl
bGYucmVzcG9uc2Uub3V0LndyaXRlKCJObyBzdGF0dXMgdG8gcmVwb3J0LiIpCisgICAgICAgIHRl
bXBsYXRlX3ZhbHVlcyA9IHsKKyAgICAgICAgICAgICJsYXN0X3N0YXR1cyIgOiBzdGF0dXNlc1sw
XSwKKyAgICAgICAgICAgICJyZWNlbnRfc3RhdHVzZXMiIDogc3RhdHVzZXNbMTpdLAorICAgICAg
ICAgICAgInByZXR0eV9xdWV1ZV9uYW1lIiA6IHNlbGYuX3ByZXR0eV9xdWV1ZV9uYW1lKHF1ZXVl
X25hbWUpLAorICAgICAgICAgICAgInNob3dfY29tbWl0X3F1ZXVlX2Zvb3RlciIgOiBxdWV1ZV9u
YW1lID09ICJjb21taXQtcXVldWUiCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5yZXNwb25zZS5v
dXQud3JpdGUodGVtcGxhdGUucmVuZGVyKCJpbmRleC5odG1sIiwgdGVtcGxhdGVfdmFsdWVzKSkK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3Nob3dy
ZXN1bHRzLnB5IGIvV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvc2hvd3Jl
c3VsdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxNGE5YQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3No
b3dyZXN1bHRzLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
IAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20g
Z29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAorCitmcm9tIG1vZGVsIGltcG9ydCBR
dWV1ZVN0YXR1cworCisKK2NsYXNzIFNob3dSZXN1bHRzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6
CisgICAgZGVmIGdldChzZWxmLCBzdGF0dXNfaWQpOgorICAgICAgICBzdGF0dXMgPSBRdWV1ZVN0
YXR1cy5nZXRfYnlfaWQoaW50KHN0YXR1c19pZCkpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg
ICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBz
ZWxmLnJlc3BvbnNlLmhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdID0gInRleHQvcGxhaW47IGNoYXJz
ZXQ9dXRmLTgiCisgICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHN0YXR1cy5yZXN1bHRz
X2ZpbGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9zdGF0dXNidWJibGUucHkgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVy
cy9zdGF0dXNidWJibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNm
NTQ3YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hh
bmRsZXJzL3N0YXR1c2J1YmJsZS5weQpAQCAtMCwwICsxLDc5IEBACisjIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKK2Zyb20gZ29vZ2xl
LmFwcGVuZ2luZS5leHQud2ViYXBwIGltcG9ydCB0ZW1wbGF0ZQorCitmcm9tIG1vZGVsIGltcG9y
dCBRdWV1ZVN0YXR1cworCisKK2NsYXNzIFN0YXR1c1N1bW1hcnkob2JqZWN0KToKKyAgICBkZWYg
X3N0YXR1c190b19jb2RlKHNlbGYsIHN0YXR1cyk6CisgICAgICAgIGNvZGVfbmFtZXMgPSB7Cisg
ICAgICAgICAgICAiUGFzcyI6ICJwYXNzIiwKKyAgICAgICAgICAgICJQZW5kaW5nIjogInBlbmRp
bmciLAorICAgICAgICAgICAgIkZhaWwiOiAiZmFpbCIsCisgICAgICAgICAgICAiRXJyb3IiOiAi
ZXJyb3IiLAorICAgICAgICB9CisgICAgICAgIHJldHVybiBjb2RlX25hbWVzLmdldChzdGF0dXMs
ICJub25lIikKKworICAgIGRlZiBfcXVldWVfbmFtZV90b19jb2RlKHNlbGYsIHF1ZXVlX25hbWUp
OgorICAgICAgICBjb2RlX25hbWVzID0geworICAgICAgICAgICAgInN0eWxlLXF1ZXVlIjogInN0
eWxlIiwKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY29kZV9uYW1lc1txdWV1ZV9uYW1lXQor
CisgICAgcXVldWVzID0gWworICAgICAgICAic3R5bGUtcXVldWUiLAorICAgIF0KKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc3VtbWFyeSA9IHt9CisKKyAgICBkZWYg
c3VtbWFyaXplKHNlbGYsIGF0dGFjaG1lbnRfaWQpOgorICAgICAgICBpZiBzZWxmLl9zdW1tYXJ5
LmdldChhdHRhY2htZW50X2lkKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdW1tYXJ5Lmdl
dChhdHRhY2htZW50X2lkKQorCisgICAgICAgIGF0dGFjaG1lbnRfc3VtbWFyeSA9IHt9CisgICAg
ICAgIGZvciBxdWV1ZSBpbiBzZWxmLnF1ZXVlczoKKyAgICAgICAgICAgIHN0YXR1c2VzID0gUXVl
dWVTdGF0dXMuYWxsKCkuZmlsdGVyKCdxdWV1ZV9uYW1lID0nLCBxdWV1ZSkuZmlsdGVyKCdhY3Rp
dmVfcGF0Y2hfaWQgPScsIGF0dGFjaG1lbnRfaWQpLm9yZGVyKCctZGF0ZScpLmZldGNoKDEpCisg
ICAgICAgICAgICBzdGF0dXNfY29kZSA9IHNlbGYuX3N0YXR1c190b19jb2RlKHN0YXR1c2VzWzBd
Lm1lc3NhZ2UgaWYgc3RhdHVzZXMgZWxzZSBOb25lKQorICAgICAgICAgICAgcXVldWVfY29kZSA9
IHNlbGYuX3F1ZXVlX25hbWVfdG9fY29kZShxdWV1ZSkKKyAgICAgICAgICAgIGF0dGFjaG1lbnRf
c3VtbWFyeVtxdWV1ZV9jb2RlXSA9IHN0YXR1c19jb2RlCisKKyAgICAgICAgc2VsZi5fc3VtbWFy
eVthdHRhY2htZW50X2lkXSA9IGF0dGFjaG1lbnRfc3VtbWFyeQorICAgICAgICByZXR1cm4gYXR0
YWNobWVudF9zdW1tYXJ5CisKKworY2xhc3MgU3RhdHVzQnViYmxlKHdlYmFwcC5SZXF1ZXN0SGFu
ZGxlcik6CisgICAgZGVmIGdldChzZWxmLCBhdHRhY2htZW50X2lkKToKKyAgICAgICAgc3RhdHVz
X3N1bW1hcnkgPSBTdGF0dXNTdW1tYXJ5KCkKKyAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewor
ICAgICAgICAgICAgInF1ZXVlX3N0YXR1cyIgOiBzdGF0dXNfc3VtbWFyeS5zdW1tYXJpemUoaW50
KGF0dGFjaG1lbnRfaWQpKSwKKyAgICAgICAgfQorICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53
cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoJ3N0YXR1c19idWJibGUuaHRtbCcsIHRlbXBsYXRlX3ZhbHVl
cykpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91
cGRhdGVzdGF0dXMucHkgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91
cGRhdGVzdGF0dXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkzYjgx
NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRs
ZXJzL3VwZGF0ZXN0YXR1cy5weQpAQCAtMCwwICsxLDYzIEBACisjIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIyAKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
Citmcm9tIGdvb2dsZS5hcHBlbmdpbmUuYXBpIGltcG9ydCB1c2VycworZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwLCBkYgorZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dC53
ZWJhcHAgaW1wb3J0IHRlbXBsYXRlCisKK2Zyb20gbW9kZWwgaW1wb3J0IFF1ZXVlU3RhdHVzCisK
KworY2xhc3MgVXBkYXRlU3RhdHVzKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGdl
dChzZWxmKToKKyAgICAgICAgc2VsZi5yZXNwb25zZS5vdXQud3JpdGUodGVtcGxhdGUucmVuZGVy
KCd1cGRhdGVfc3RhdHVzLmh0bWwnLCBOb25lKSkKKworICAgIGRlZiBfaW50X2Zyb21fcmVxdWVz
dChzZWxmLCBuYW1lKToKKyAgICAgICAgc3RyaW5nX3ZhbHVlID0gc2VsZi5yZXF1ZXN0LmdldChu
YW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRfdmFsdWUgPSBpbnQoc3RyaW5nX3Zh
bHVlKQorICAgICAgICAgICAgcmV0dXJuIGludF92YWx1ZQorICAgICAgICBleGNlcHQgVmFsdWVF
cnJvciwgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICByZXR1cm4gTm9uZQor
CisgICAgZGVmIHBvc3Qoc2VsZik6CisgICAgICAgIHF1ZXVlX3N0YXR1cyA9IFF1ZXVlU3RhdHVz
KCkKKworICAgICAgICBpZiB1c2Vycy5nZXRfY3VycmVudF91c2VyKCk6CisgICAgICAgICAgICBx
dWV1ZV9zdGF0dXMuYXV0aG9yID0gdXNlcnMuZ2V0X2N1cnJlbnRfdXNlcigpCisKKyAgICAgICAg
cXVldWVfbmFtZSA9IHNlbGYucmVxdWVzdC5nZXQoJ3F1ZXVlX25hbWUnKQorICAgICAgICBxdWV1
ZV9zdGF0dXMucXVldWVfbmFtZSA9IHF1ZXVlX25hbWUKKyAgICAgICAgcXVldWVfc3RhdHVzLmFj
dGl2ZV9idWdfaWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCdidWdfaWQnKQorICAgICAgICBx
dWV1ZV9zdGF0dXMuYWN0aXZlX3BhdGNoX2lkID0gc2VsZi5faW50X2Zyb21fcmVxdWVzdCgncGF0
Y2hfaWQnKQorICAgICAgICBxdWV1ZV9zdGF0dXMubWVzc2FnZSA9IHNlbGYucmVxdWVzdC5nZXQo
J3N0YXR1cycpCisgICAgICAgIHJlc3VsdHNfZmlsZSA9IHNlbGYucmVxdWVzdC5nZXQoInJlc3Vs
dHNfZmlsZSIpCisgICAgICAgIHF1ZXVlX3N0YXR1cy5yZXN1bHRzX2ZpbGUgPSBkYi5CbG9iKHN0
cihyZXN1bHRzX2ZpbGUpKQorICAgICAgICBxdWV1ZV9zdGF0dXMucHV0KCkKKyAgICAgICAgc2Vs
Zi5yZXNwb25zZS5vdXQud3JpdGUocXVldWVfc3RhdHVzLmtleSgpLmlkKCkpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tYWluLnB5IGIvV2ViS2l0VG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kYTJmNGM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2
ZXIvbWFpbi5weQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFJlcXVl
c3QgYSBtb2Rlcm4gRGphbmdvCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBvcnQgdXNl
X2xpYnJhcnkKK3VzZV9saWJyYXJ5KCdkamFuZ28nLCAnMS4xJykKKworZnJvbSBnb29nbGUuYXBw
ZW5naW5lLmV4dCBpbXBvcnQgd2ViYXBwCitmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFw
cC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKKworZnJvbSBoYW5kbGVycy5wYXRjaHN0YXR1cyBp
bXBvcnQgUGF0Y2hTdGF0dXMKK2Zyb20gaGFuZGxlcnMucmVjZW50c3RhdHVzIGltcG9ydCBSZWNl
bnRTdGF0dXMKK2Zyb20gaGFuZGxlcnMuc2hvd3Jlc3VsdHMgaW1wb3J0IFNob3dSZXN1bHRzCitm
cm9tIGhhbmRsZXJzLnN0YXR1c2J1YmJsZSBpbXBvcnQgU3RhdHVzQnViYmxlCitmcm9tIGhhbmRs
ZXJzLnVwZGF0ZXN0YXR1cyBpbXBvcnQgVXBkYXRlU3RhdHVzCisKK3dlYmFwcC50ZW1wbGF0ZS5y
ZWdpc3Rlcl90ZW1wbGF0ZV9saWJyYXJ5KCdmaWx0ZXJzLndlYmtpdF9leHRyYXMnKQorCityb3V0
ZXMgPSBbCisgICAgKCcvJywgUmVjZW50U3RhdHVzKSwKKyAgICAoJy9xdWV1ZS1zdGF0dXMvKC4q
KScsIFJlY2VudFN0YXR1cyksCisgICAgKCcvdXBkYXRlLXN0YXR1cycsIFVwZGF0ZVN0YXR1cyks
CisgICAgKHInL3BhdGNoLXN0YXR1cy8oLiopLyguKiknLCBQYXRjaFN0YXR1cyksCisgICAgKHIn
L3N0YXR1cy1idWJibGUvKC4qKScsIFN0YXR1c0J1YmJsZSksCisgICAgKHInL3Jlc3VsdHMvKC4q
KScsIFNob3dSZXN1bHRzKQorXQorCithcHBsaWNhdGlvbiA9IHdlYmFwcC5XU0dJQXBwbGljYXRp
b24ocm91dGVzLCBkZWJ1Zz1UcnVlKQorCitkZWYgbWFpbigpOgorICAgIHJ1bl93c2dpX2FwcChh
cHBsaWNhdGlvbikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsLnB5IGIvV2ViS2l0
VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uM2Q3ZTU5OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1F1ZXVl
U3RhdHVzU2VydmVyL21vZGVsLnB5CkBAIC0wLDAgKzEsMzggQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCisKK2NsYXNzIFF1ZXVlU3Rh
dHVzKGRiLk1vZGVsKToKKyAgICBhdXRob3IgPSBkYi5Vc2VyUHJvcGVydHkoKQorICAgIHF1ZXVl
X25hbWUgPSBkYi5TdHJpbmdQcm9wZXJ0eSgpCisgICAgYWN0aXZlX2J1Z19pZCA9IGRiLkludGVn
ZXJQcm9wZXJ0eSgpCisgICAgYWN0aXZlX3BhdGNoX2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkK
KyAgICBtZXNzYWdlID0gZGIuU3RyaW5nUHJvcGVydHkobXVsdGlsaW5lPVRydWUpCisgICAgZGF0
ZSA9IGRiLkRhdGVUaW1lUHJvcGVydHkoYXV0b19ub3dfYWRkPVRydWUpCisgICAgcmVzdWx0c19m
aWxlID0gZGIuQmxvYlByb3BlcnR5KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1F1ZXVlU3Rh
dHVzU2VydmVyL3F1ZXVlX3N0YXR1cy5weSBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVy
L3F1ZXVlX3N0YXR1cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjllN2U4OS4u
MDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9xdWV1ZV9zdGF0dXMu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIyAKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMgCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
aW1wb3J0IGNnaQotaW1wb3J0IG9zCi0KLSMgUmVxdWVzdCBhIG1vZGVybiBEamFuZ28KLWZyb20g
Z29vZ2xlLmFwcGVuZ2luZS5kaXN0IGltcG9ydCB1c2VfbGlicmFyeQotdXNlX2xpYnJhcnkoJ2Rq
YW5nbycsICcxLjEnKQotCi1mcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcCBpbXBvcnQg
dGVtcGxhdGUKLWZyb20gZ29vZ2xlLmFwcGVuZ2luZS5hcGkgaW1wb3J0IHVzZXJzCi1mcm9tIGdv
b2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAsIGRiCi1mcm9tIGdvb2dsZS5hcHBlbmdp
bmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKLQotd2ViYXBwLnRlbXBsYXRl
LnJlZ2lzdGVyX3RlbXBsYXRlX2xpYnJhcnkoJ2ZpbHRlcnMud2Via2l0X2V4dHJhcycpCi0KLQot
Y2xhc3MgUXVldWVTdGF0dXMoZGIuTW9kZWwpOgotICAgIGF1dGhvciA9IGRiLlVzZXJQcm9wZXJ0
eSgpCi0gICAgcXVldWVfbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKLSAgICBhY3RpdmVfYnVn
X2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkKLSAgICBhY3RpdmVfcGF0Y2hfaWQgPSBkYi5JbnRl
Z2VyUHJvcGVydHkoKQotICAgIG1lc3NhZ2UgPSBkYi5TdHJpbmdQcm9wZXJ0eShtdWx0aWxpbmU9
VHJ1ZSkKLSAgICBkYXRlID0gZGIuRGF0ZVRpbWVQcm9wZXJ0eShhdXRvX25vd19hZGQ9VHJ1ZSkK
LSAgICByZXN1bHRzX2ZpbGUgPSBkYi5CbG9iUHJvcGVydHkoKQotCi0KLWNsYXNzIFJlY2VudFN0
YXR1cyh3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgotICAgIGRlZiBfdGl0bGVfY2FzZShzZWxmLCBz
dHJpbmcpOgotICAgICAgICB3b3JkcyA9IHN0cmluZy5zcGxpdCgiICIpCi0gICAgICAgIHdvcmRz
ID0gbWFwKGxhbWJkYSB3b3JkOiB3b3JkLmNhcGl0YWxpemUoKSwgd29yZHMpCi0gICAgICAgIHJl
dHVybiAiICIuam9pbih3b3JkcykKLQotICAgIGRlZiBfcHJldHR5X3F1ZXVlX25hbWUoc2VsZiwg
cXVldWVfbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl90aXRsZV9jYXNlKHF1ZXVlX25hbWUu
cmVwbGFjZSgiLSIsICIgIikpCi0KLSAgICAjIFdlIGNvdWxkIGNoYW5nZSAiLyIgdG8ganVzdCBy
ZWRpcmVjdCB0byAvcXVldWUtc3RhdHVzL2NvbW1pdC1xdWV1ZSBpbiB0aGUgZnV0dXJlCi0gICAg
IyBhdCB3aGljaCBwb2ludCB3ZSB3b3VsZCBub3QgbmVlZCBhIGRlZmF1bHQgdmFsdWUgZm9yIHF1
ZXVlX25hbWUgaGVyZS4KLSAgICBkZWYgZ2V0KHNlbGYsIHF1ZXVlX25hbWU9ImNvbW1pdC1xdWV1
ZSIpOgotICAgICAgICBzdGF0dXNlc19xdWVyeSA9IFF1ZXVlU3RhdHVzLmFsbCgpLmZpbHRlcigi
cXVldWVfbmFtZSA9IiwgcXVldWVfbmFtZSkub3JkZXIoIi1kYXRlIikKLSAgICAgICAgc3RhdHVz
ZXMgPSBzdGF0dXNlc19xdWVyeS5mZXRjaCg2KQotICAgICAgICBpZiBub3Qgc3RhdHVzZXM6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5yZXNwb25zZS5vdXQud3JpdGUoIk5vIHN0YXR1cyB0byBy
ZXBvcnQuIikKLSAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewotICAgICAgICAgICAgImxhc3Rf
c3RhdHVzIiA6IHN0YXR1c2VzWzBdLAotICAgICAgICAgICAgInJlY2VudF9zdGF0dXNlcyIgOiBz
dGF0dXNlc1sxOl0sCi0gICAgICAgICAgICAicHJldHR5X3F1ZXVlX25hbWUiIDogc2VsZi5fcHJl
dHR5X3F1ZXVlX25hbWUocXVldWVfbmFtZSksCi0gICAgICAgICAgICAic2hvd19jb21taXRfcXVl
dWVfZm9vdGVyIiA6IHF1ZXVlX25hbWUgPT0gImNvbW1pdC1xdWV1ZSIKLSAgICAgICAgfQotICAg
ICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoImluZGV4Lmh0bWwi
LCB0ZW1wbGF0ZV92YWx1ZXMpKQotCi0KLWNsYXNzIFBhdGNoU3RhdHVzKHdlYmFwcC5SZXF1ZXN0
SGFuZGxlcik6Ci0gICAgZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1lLCBhdHRhY2htZW50X2lkKToK
LSAgICAgICAgc3RhdHVzZXMgPSBRdWV1ZVN0YXR1cy5hbGwoKS5maWx0ZXIoJ3F1ZXVlX25hbWUg
PScsIHF1ZXVlX25hbWUpLmZpbHRlcignYWN0aXZlX3BhdGNoX2lkID0nLCBpbnQoYXR0YWNobWVu
dF9pZCkpLm9yZGVyKCctZGF0ZScpLmZldGNoKDEpCi0gICAgICAgIGlmIG5vdCBzdGF0dXNlczoK
LSAgICAgICAgICAgIHNlbGYuZXJyb3IoNDA0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHN0YXR1c2VzWzBdLm1lc3NhZ2UpCi0KLQotY2xhc3Mg
U3RhdHVzU3VtbWFyeShvYmplY3QpOgotICAgIGRlZiBfc3RhdHVzX3RvX2NvZGUoc2VsZiwgc3Rh
dHVzKToKLSAgICAgICAgY29kZV9uYW1lcyA9IHsKLSAgICAgICAgICAgICJQYXNzIjogInBhc3Mi
LAotICAgICAgICAgICAgIlBlbmRpbmciOiAicGVuZGluZyIsCi0gICAgICAgICAgICAiRmFpbCI6
ICJmYWlsIiwKLSAgICAgICAgICAgICJFcnJvciI6ICJlcnJvciIsCi0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGNvZGVfbmFtZXMuZ2V0KHN0YXR1cywgIm5vbmUiKQotCi0gICAgZGVmIF9xdWV1
ZV9uYW1lX3RvX2NvZGUoc2VsZiwgcXVldWVfbmFtZSk6Ci0gICAgICAgIGNvZGVfbmFtZXMgPSB7
Ci0gICAgICAgICAgICAic3R5bGUtcXVldWUiOiAic3R5bGUiLAotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBjb2RlX25hbWVzW3F1ZXVlX25hbWVdCi0KLSAgICBxdWV1ZXMgPSBbCi0gICAgICAg
ICJzdHlsZS1xdWV1ZSIsCi0gICAgXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAg
ICBzZWxmLl9zdW1tYXJ5ID0ge30KLQotICAgIGRlZiBzdW1tYXJpemUoc2VsZiwgYXR0YWNobWVu
dF9pZCk6Ci0gICAgICAgIGlmIHNlbGYuX3N1bW1hcnkuZ2V0KGF0dGFjaG1lbnRfaWQpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3N1bW1hcnkuZ2V0KGF0dGFjaG1lbnRfaWQpCi0KLSAgICAg
ICAgYXR0YWNobWVudF9zdW1tYXJ5ID0ge30KLSAgICAgICAgZm9yIHF1ZXVlIGluIHNlbGYucXVl
dWVzOgotICAgICAgICAgICAgc3RhdHVzZXMgPSBRdWV1ZVN0YXR1cy5hbGwoKS5maWx0ZXIoJ3F1
ZXVlX25hbWUgPScsIHF1ZXVlKS5maWx0ZXIoJ2FjdGl2ZV9wYXRjaF9pZCA9JywgYXR0YWNobWVu
dF9pZCkub3JkZXIoJy1kYXRlJykuZmV0Y2goMSkKLSAgICAgICAgICAgIHN0YXR1c19jb2RlID0g
c2VsZi5fc3RhdHVzX3RvX2NvZGUoc3RhdHVzZXNbMF0ubWVzc2FnZSBpZiBzdGF0dXNlcyBlbHNl
IE5vbmUpCi0gICAgICAgICAgICBxdWV1ZV9jb2RlID0gc2VsZi5fcXVldWVfbmFtZV90b19jb2Rl
KHF1ZXVlKQotICAgICAgICAgICAgYXR0YWNobWVudF9zdW1tYXJ5W3F1ZXVlX2NvZGVdID0gc3Rh
dHVzX2NvZGUKLQotICAgICAgICBzZWxmLl9zdW1tYXJ5W2F0dGFjaG1lbnRfaWRdID0gYXR0YWNo
bWVudF9zdW1tYXJ5Ci0gICAgICAgIHJldHVybiBhdHRhY2htZW50X3N1bW1hcnkKLQotCi1jbGFz
cyBTdGF0dXNCdWJibGUod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKLSAgICBkZWYgZ2V0KHNlbGYs
IGF0dGFjaG1lbnRfaWQpOgotICAgICAgICBzdGF0dXNfc3VtbWFyeSA9IFN0YXR1c1N1bW1hcnko
KQotICAgICAgICB0ZW1wbGF0ZV92YWx1ZXMgPSB7Ci0gICAgICAgICAgICAicXVldWVfc3RhdHVz
IiA6IHN0YXR1c19zdW1tYXJ5LnN1bW1hcml6ZShpbnQoYXR0YWNobWVudF9pZCkpLAotICAgICAg
ICB9Ci0gICAgICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHRlbXBsYXRlLnJlbmRlcignc3Rh
dHVzX2J1YmJsZS5odG1sJywgdGVtcGxhdGVfdmFsdWVzKSkKLQotCi1jbGFzcyBVcGRhdGVTdGF0
dXMod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBz
ZWxmLnJlc3BvbnNlLm91dC53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIoJ3VwZGF0ZV9zdGF0dXMuaHRt
bCcsIE5vbmUpKQotCi0gICAgZGVmIF9pbnRfZnJvbV9yZXF1ZXN0KHNlbGYsIG5hbWUpOgotICAg
ICAgICBzdHJpbmdfdmFsdWUgPSBzZWxmLnJlcXVlc3QuZ2V0KG5hbWUpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGludF92YWx1ZSA9IGludChzdHJpbmdfdmFsdWUpCi0gICAgICAgICAgICBy
ZXR1cm4gaW50X3ZhbHVlCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBUeXBlRXJyb3I6Ci0g
ICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgcG9zdChzZWxm
KToKLSAgICAgICAgcXVldWVfc3RhdHVzID0gUXVldWVTdGF0dXMoKQotCi0gICAgICAgIGlmIHVz
ZXJzLmdldF9jdXJyZW50X3VzZXIoKToKLSAgICAgICAgICAgIHF1ZXVlX3N0YXR1cy5hdXRob3Ig
PSB1c2Vycy5nZXRfY3VycmVudF91c2VyKCkKLQotICAgICAgICBxdWV1ZV9uYW1lID0gc2VsZi5y
ZXF1ZXN0LmdldCgncXVldWVfbmFtZScpCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5xdWV1ZV9uYW1l
ID0gcXVldWVfbmFtZQotICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0aXZlX2J1Z19pZCA9IHNlbGYu
X2ludF9mcm9tX3JlcXVlc3QoJ2J1Z19pZCcpCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5hY3RpdmVf
cGF0Y2hfaWQgPSBzZWxmLl9pbnRfZnJvbV9yZXF1ZXN0KCdwYXRjaF9pZCcpCi0gICAgICAgIHF1
ZXVlX3N0YXR1cy5tZXNzYWdlID0gc2VsZi5yZXF1ZXN0LmdldCgnc3RhdHVzJykKLSAgICAgICAg
cmVzdWx0c19maWxlID0gc2VsZi5yZXF1ZXN0LmdldCgicmVzdWx0c19maWxlIikKLSAgICAgICAg
cXVldWVfc3RhdHVzLnJlc3VsdHNfZmlsZSA9IGRiLkJsb2Ioc3RyKHJlc3VsdHNfZmlsZSkpCi0g
ICAgICAgIHF1ZXVlX3N0YXR1cy5wdXQoKQotICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0
ZShxdWV1ZV9zdGF0dXMua2V5KCkuaWQoKSkKLQotCi1jbGFzcyBTaG93UmVzdWx0cyh3ZWJhcHAu
UmVxdWVzdEhhbmRsZXIpOgotICAgIGRlZiBnZXQoc2VsZiwgc3RhdHVzX2lkKToKLSAgICAgICAg
c3RhdHVzID0gUXVldWVTdGF0dXMuZ2V0X2J5X2lkKGludChzdGF0dXNfaWQpKQotICAgICAgICBp
ZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgc2VsZi5lcnJvcig0MDQpCi0gICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgc2VsZi5yZXNwb25zZS5oZWFkZXJzWyJDb250ZW50LVR5cGUiXSA9ICJ0
ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IgotICAgICAgICBzZWxmLnJlc3BvbnNlLm91dC53cml0
ZShzdGF0dXMucmVzdWx0c19maWxlKQotCi0KLXJvdXRlcyA9IFsKLSAgICAoJy8nLCBSZWNlbnRT
dGF0dXMpLAotICAgICgnL3F1ZXVlLXN0YXR1cy8oLiopJywgUmVjZW50U3RhdHVzKSwKLSAgICAo
Jy91cGRhdGUtc3RhdHVzJywgVXBkYXRlU3RhdHVzKSwKLSAgICAocicvcGF0Y2gtc3RhdHVzLygu
KikvKC4qKScsIFBhdGNoU3RhdHVzKSwKLSAgICAocicvc3RhdHVzLWJ1YmJsZS8oLiopJywgU3Rh
dHVzQnViYmxlKSwKLSAgICAocicvcmVzdWx0cy8oLiopJywgU2hvd1Jlc3VsdHMpCi1dCi0KLWFw
cGxpY2F0aW9uID0gd2ViYXBwLldTR0lBcHBsaWNhdGlvbihyb3V0ZXMsIGRlYnVnPVRydWUpCi0K
LWRlZiBtYWluKCk6Ci0gICAgcnVuX3dzZ2lfYXBwKGFwcGxpY2F0aW9uKQotCi1pZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQo=
</data>
<flag name="review"
          id="27217"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>