<?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>152670</bug_id>
          
          <creation_ts>2016-01-03 15:13:11 -0800</creation_ts>
          <short_desc>Update data reporting and analysis</short_desc>
          <delta_ts>2016-01-03 18:37:35 -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>Animations</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1152162</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 15:13:11 -0800</bug_when>
    <thetext>Avoid doing a lot of processing during the benchmark itself. Also show raw data on top of the filtered data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152163</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-03 15:13:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/24033996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152210</commentid>
    <comment_count>2</comment_count>
      <attachid>268165</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:04:23 -0800</bug_when>
    <thetext>Created attachment 268165
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152212</commentid>
    <comment_count>3</comment_count>
      <attachid>268166</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:10:30 -0800</bug_when>
    <thetext>Created attachment 268166
1. Avoid processing the data through the Experiment while the test is running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152213</commentid>
    <comment_count>4</comment_count>
      <attachid>268167</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:10:51 -0800</bug_when>
    <thetext>Created attachment 268167
2. Refactor how Animator does its recording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152214</commentid>
    <comment_count>5</comment_count>
      <attachid>268168</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:11:14 -0800</bug_when>
    <thetext>Created attachment 268168
3. Producing the JSON can take a while with all of the data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152215</commentid>
    <comment_count>6</comment_count>
      <attachid>268169</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:11:34 -0800</bug_when>
    <thetext>Created attachment 268169
4. Show new graph data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152219</commentid>
    <comment_count>7</comment_count>
      <attachid>268165</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-03 18:22:01 -0800</bug_when>
    <thetext>Comment on attachment 268165
Patch

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

&gt; PerformanceTests/Animometer/resources/debug-runner/animometer.js:362
&gt; +        document.querySelector(&quot;#results-json button&quot;).remove();

Does .remove() work in all browsers we care about?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152220</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:24:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 268165 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268165&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Animometer/resources/debug-runner/animometer.js:362
&gt; &gt; +        document.querySelector(&quot;#results-json button&quot;).remove();
&gt; 
&gt; Does .remove() work in all browsers we care about?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152221</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-01-03 18:37:35 -0800</bug_when>
    <thetext>Committed r194523: &lt;http://trac.webkit.org/changeset/194523&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268165</attachid>
            <date>2016-01-03 18:04:23 -0800</date>
            <delta_ts>2016-01-03 18:22:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152670-20160103180349.patch</filename>
            <type>text/plain</type>
            <size>61958</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NTIxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
ZGV2ZWxvcGVyLmh0bWwKaW5kZXggODZkZTE1NGQ0ZjVjNjkxYjkwNzQxMWY4YjAzN2Y4NGVlZTk2
NTVjNi4uMjAwMTZmYTI3NjhhNTYyYWViMmQ3MDM5ZThmMjQxZjJmYmJhOTIxYSAxMDA2NDQKLS0t
IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbApAQCAtNzgsOCArNzgsMTEgQEAK
ICAgICAgICAgICAgICAgICA8dGFibGUgaWQ9InJlc3VsdHMtaGVhZGVyIj48L3RhYmxlPgogICAg
ICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICA8ZGl2IGlkPSJyZXN1bHRzLWpzb24iPgotICAg
ICAgICAgICAgICAgIEpTT046Ci0gICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9MSBvbmNs
aWNrPSJ0aGlzLmZvY3VzKCk7dGhpcy5zZWxlY3QoKSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KKyAg
ICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzbWFsbC1idXR0b24iIG9uY2xpY2s9ImJlbmNo
bWFya0NvbnRyb2xsZXIuc2hvd0pTT05SZXN1bHRzKCkiPkpTT04gcmVzdWx0czwvYnV0dG9uPgor
ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbiI+CisgICAgICAgICAgICAgICAgICAg
IEpTT046CisgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPTEgb25jbGljaz0idGhp
cy5mb2N1cygpO3RoaXMuc2VsZWN0KCkiIHJlYWRvbmx5PjwvdGV4dGFyZWE+CisgICAgICAgICAg
ICAgICAgPC9kaXY+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDxidXR0b24gb25j
bGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zdGFydEJlbmNobWFyaygpIj5UZXN0IEFnYWluPC9i
dXR0b24+CiAgICAgICAgICAgICA8cD4ncyc6IFNlbGVjdCBkaWZmZXJlbnQgZGF0YSBmb3IgY29w
eS9wYXN0ZTwvcD4KQEAgLTg5LDYgKzkyLDIzIEBACiAgICAgICAgICAgICAgICAgPGJ1dHRvbiBv
bmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRzKCkiPiZsdDsgUmVzdWx0czwv
YnV0dG9uPgogICAgICAgICAgICAgICAgIDxoMT5HcmFwaDo8L2gxPgogICAgICAgICAgICAgPC9o
ZWFkZXI+CisgICAgICAgICAgICA8bmF2PgorICAgICAgICAgICAgICAgIDxmb3JtIG5hbWU9Imdy
YXBoLW9wdGlvbnMiPgorICAgICAgICAgICAgICAgICAgICA8dWw+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ibWFya2VycyIg
Y2hlY2tlZD4gTWFya2VyczwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4+dGltZTogPHNwYW4gY2xhc3M9InRpbWUiPjwvc3Bhbj48L3NwYW4+PC9saT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJh
dmVyYWdlcyIgY2hlY2tlZD4gQXZlcmFnZXM8L2xhYmVsPjwvbGk+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY29tcGxleGl0
eSIgY2hlY2tlZD4gQ29tcGxleGl0eTwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9ImNvbXBsZXhpdHkiPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAg
ICAgICAgICAgPGxpPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJhd0ZQUyI+
IFJhdyBGUFM8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz
PSJyYXdGUFMiPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJl
bD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpbHRlcmVkRlBTIiBjaGVja2VkPiBGaWx0
ZXJlZCBGUFM8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz
PSJmaWx0ZXJlZEZQUyI+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGk+
PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iaW50ZXJ2YWxGUFMiPiBBdmVyYWdl
IEZQUyBwZXIgc2FtcGxlIGludGVydmFsPC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8c3BhbiBjbGFzcz0iaW50ZXJ2YWxGUFMiPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAg
ICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgIDwvZm9ybT4KKyAgICAgICAgICAgIDwvbmF2
PgogICAgICAgICAgICAgPHAgY2xhc3M9InNjb3JlIj48L3A+CiAgICAgICAgICAgICA8cCBjbGFz
cz0ibWVhbiI+PC9wPgogICAgICAgICAgICAgPGRpdiBpZD0idGVzdC1ncmFwaC1kYXRhIj48L2Rp
dj4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jl
c291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MKaW5kZXggYjRmODJiZWE1MjJkZTFi
ZjI5ODkyODdhYmQ0YmY2Y2M0NzM3MmY0My4uYmUwNTQ4N2ZjZWI0ODEzYWI2NTYwYzUxNGJlOTJh
NzU5M2YwYmZlNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MKQEAgLTMsNiAr
MywxMCBAQCBib2R5IHsKICAgICBjb2xvcjogcmdiKDIzNSwgMjM1LCAyMzUpOwogfQogCisuaGlk
ZGVuIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCiBoMSB7CiAgICAgbWFyZ2luOiA1dmggMDsK
IH0KQEAgLTEzOSw2ICsxNDMsNyBAQCBsYWJlbC50cmVlLWxhYmVsIHsKIAogI3N1aXRlcyB7CiAg
ICAgcGFkZGluZy1sZWZ0OiAxNXZ3OworICAgIHBhZGRpbmctcmlnaHQ6IDJlbTsKICAgICBmbGV4
OiAwIDEgNDAlOwogfQogCkBAIC0xNDksNyArMTU0LDcgQEAgbGFiZWwudHJlZS1sYWJlbCB7CiAj
aW50cm8gaW5wdXRbdHlwZT0ibnVtYmVyIl0gewogICAgIHdpZHRoOiA1MHB4OwogfQotIAorCiAj
c3VpdGVzIGlucHV0W3R5cGU9Im51bWJlciJdIHsKICAgICBkaXNwbGF5OiBub25lOwogICAgIGZs
b2F0OiByaWdodDsKQEAgLTI2Niw2ICsyNzEsMjAgQEAgbGFiZWwudHJlZS1sYWJlbCB7CiAgICAg
Zm9udC1zaXplOiAyZW07CiB9CiAKKyNyZXN1bHRzIGJ1dHRvbi5zbWFsbC1idXR0b24geworICAg
IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjM1LCAyMzUsIDIzNSwgLjkpOworICAgIGNvbG9yOiBy
Z2JhKDIzNSwgMjM1LCAyMzUsIC45KTsKKyAgICBib3JkZXItcmFkaXVzOiAycHg7CisgICAgcGFk
ZGluZzogMXB4IDRweDsKKyAgICBtYXJnaW46IDAgMCAwIDFlbTsKKyAgICBmb250LXNpemU6IDlw
eDsKK30KKworI3Jlc3VsdHMgYnV0dG9uLnNtYWxsLWJ1dHRvbjphY3RpdmUgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYmEoMjM1LCAyMzUsIDIzNSwgLjIpOworICAgIGNvbG9yOiBpbmhlcml0
OworfQorCiAuc2NvcmUgewogICAgIGZvbnQtc2l6ZTogM2VtOwogfQpAQCAtMjg3LDIwICszMDYs
NiBAQCBsYWJlbC50cmVlLWxhYmVsIHsKICAgICBwYWRkaW5nLWxlZnQ6IC4yNWVtOwogfQogCi0j
cmVzdWx0cy1kYXRhIGJ1dHRvbi5zbWFsbC1idXR0b24gewotICAgIGJvcmRlcjogMXB4IHNvbGlk
IHJnYmEoMjM1LCAyMzUsIDIzNSwgLjkpOwotICAgIGNvbG9yOiByZ2JhKDIzNSwgMjM1LCAyMzUs
IC45KTsKLSAgICBib3JkZXItcmFkaXVzOiAycHg7Ci0gICAgcGFkZGluZzogMXB4IDRweDsKLSAg
ICBtYXJnaW46IDAgMCAwIDFlbTsKLSAgICBmb250LXNpemU6IDlweDsKLX0KLQotI3Jlc3VsdHMt
ZGF0YSBidXR0b24uc21hbGwtYnV0dG9uOmFjdGl2ZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
cmdiYSgyMzUsIDIzNSwgMjM1LCAuMik7Ci0gICAgY29sb3I6IGluaGVyaXQ7Ci19Ci0KICNyZXN1
bHRzLXRhYmxlcyB0ZC5ub2lzeS1yZXN1bHRzIHsKICAgICBjb2xvcjogcmdiKDI1NSwgMTA0LCAx
MDQpOwogfQpAQCAtMzQ2LDYgKzM1MSwzNiBAQCBsYWJlbC50cmVlLWxhYmVsIHsKICAgICBhbGln
bi1zZWxmOiBzdHJldGNoOwogfQogCisjdGVzdC1ncmFwaCBuYXYgeworICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICB0b3A6IDEuNWVtOworICAgIHJpZ2h0OiAwOworICAgIGZvbnQtc2l6ZTog
LjhlbTsKKyAgICB3aWR0aDogMjUlOworfQorCisjdGVzdC1ncmFwaCBuYXYgdWwgeworICAgIG1h
cmdpbjogMCAzMHB4IDAgMDsKKyAgICBwYWRkaW5nOiAwOworICAgIGxpc3Qtc3R5bGU6IG5vbmU7
Cit9CisKKyN0ZXN0LWdyYXBoIG5hdiB1bCB1bCB7CisgICAgcGFkZGluZy1sZWZ0OiAyZW07Cit9
CisKKyN0ZXN0LWdyYXBoIG5hdiBsaSB7CisgICAgcGFkZGluZzogLjFlbSAwOworfQorCisjdGVz
dC1ncmFwaCBuYXYgbGkgPiBzcGFuIHsKKyAgICBmbG9hdDogcmlnaHQ7Cit9CisKKyN0ZXN0LWdy
YXBoIG5hdi5oaWRlLWRhdGEgc3BhbiB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwogLyogLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGggU2Vj
dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSAqLwpAQCAtMzU3LDYgKzM5Miw3IEBAIGxhYmVsLnRyZWUtbGFiZWwgewogCiAjdGVz
dC1ncmFwaC1kYXRhID4gc3ZnIHsKICAgICBmaWxsOiBub25lOworICAgIG92ZXJmbG93OiB2aXNp
YmxlOwogfQogCiAuYXhpcyBwYXRoLApAQCAtMzY2LDE2ICs0MDIsNiBAQCBsYWJlbC50cmVlLWxh
YmVsIHsKICAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7CiB9CiAKLS5sZWZ0LXNhbXBs
ZXMgewotICAgIHN0cm9rZTogIzdBREQ0OTsKLSAgICBzdHJva2Utd2lkdGg6IDEuNXB4OwotfQot
Ci0ucmlnaHQtc2FtcGxlcyB7Ci0gICAgc3Ryb2tlOiAjRkE0OTI1OwotICAgIHN0cm9rZS13aWR0
aDogMS41cHg7Ci19Ci0KIC5zYW1wbGUtdGltZSB7CiAgICAgc3Ryb2tlOiAjNTQ5M0Q2OwogfQpA
QCAtMzg1LDcgKzQxMSw1MCBAQCBsYWJlbC50cmVlLWxhYmVsIHsKICAgICBvcGFjaXR5OiAuODsK
IH0KIAorLnRhcmdldC1mcHMgeworICAgIHN0cm9rZTogcmdiYSgyNTAsIDczLCAzNywgLjQpOwor
ICAgIHN0cm9rZS13aWR0aDogMXB4OworICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwLCAxMDsKK30K
KwogLnJpZ2h0LW1lYW4gewogICAgIHN0cm9rZTogI0ZBNDkyNTsKICAgICBvcGFjaXR5OiAuODsK
IH0KKworI2N1cnNvciBsaW5lIHsKKyAgICBzdHJva2U6IHJnYigyNTAsIDI1MCwgMjUwKTsKKyAg
ICBzdHJva2Utd2lkdGg6IDFweDsKK30KKworI2N1cnNvciBjaXJjbGUgeworICAgIGZpbGw6IHJn
YigyNTAsIDI1MCwgMjUwKTsKK30KKworI2NvbXBsZXhpdHkgcGF0aCB7CisgICAgc3Ryb2tlOiBy
Z2JhKDEyMiwgMjIxLCA3MywgLjcpOworICAgIHN0cm9rZS13aWR0aDogMnB4OworfQorCisjY29t
cGxleGl0eSBjaXJjbGUgeworICAgIGZpbGw6IHJnYigxMjIsIDIyMSwgNzMpOworfQorCisjZmls
dGVyZWRGUFMgcGF0aCB7CisgICAgc3Ryb2tlOiByZ2JhKDI1MCwgNzMsIDM3LCAuNyk7CisgICAg
c3Ryb2tlLXdpZHRoOiAycHg7Cit9CisKKyNmaWx0ZXJlZEZQUyBjaXJjbGUgeworICAgIGZpbGw6
IHJnYigyNTAsIDczLCAzNyk7Cit9CisKKyNyYXdGUFMgcGF0aCB7CisgICAgc3Ryb2tlOiByZ2Jh
KDI1MCwgNzMsIDM3LCAuNyk7CisgICAgc3Ryb2tlLXdpZHRoOiAxcHg7Cit9CisKKyNyYXdGUFMg
Y2lyY2xlLAorI2ludGVydmFsRlBTIGNpcmNsZSB7CisgICAgZmlsbDogcmdiKDI1MCwgNzMsIDM3
KTsKK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCmluZGV4IDQ4ZDUyM2E5ZjM5ZTBi
OGNkYmQ5YmQxODI5MTVmN2E2N2U3MTcxMWYuLjYwNWJiMzhlMGVjYjE1ZTk4MjAwMjljYjA1YTRh
YTYzZjUxNTNmMmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwpAQCAtMzA4LDcg
KzMwOCw4IEBAIHdpbmRvdy5zdWl0ZXNNYW5hZ2VyID0KIFV0aWxpdGllcy5leHRlbmRPYmplY3Qo
d2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIsIHsKICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5hZGRF
dmVudExpc3RlbmVyKCJjaGFuZ2UiLCBiZW5jaG1hcmtDb250cm9sbGVyLm9uRm9ybUNoYW5nZWQs
IHRydWUpOworICAgICAgICBkb2N1bWVudC5mb3Jtc1siYmVuY2htYXJrLW9wdGlvbnMiXS5hZGRF
dmVudExpc3RlbmVyKCJjaGFuZ2UiLCBiZW5jaG1hcmtDb250cm9sbGVyLm9uQmVuY2htYXJrT3B0
aW9uc0NoYW5nZWQsIHRydWUpOworICAgICAgICBkb2N1bWVudC5mb3Jtc1siZ3JhcGgtb3B0aW9u
cyJdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGJlbmNobWFya0NvbnRyb2xsZXIub25HcmFw
aE9wdGlvbnNDaGFuZ2VkLCB0cnVlKTsKICAgICAgICAgb3B0aW9uc01hbmFnZXIudXBkYXRlVUlG
cm9tTG9jYWxTdG9yYWdlKCk7CiAgICAgICAgIHN1aXRlc01hbmFnZXIuY3JlYXRlRWxlbWVudHMo
KTsKICAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2UoKTsKQEAg
LTMxNiw3ICszMTcsNyBAQCBVdGlsaXRpZXMuZXh0ZW5kT2JqZWN0KHdpbmRvdy5iZW5jaG1hcmtD
b250cm9sbGVyLCB7CiAgICAgICAgIHN1aXRlc01hbmFnZXIudXBkYXRlRWRpdHNFbGVtZW50c1N0
YXRlKCk7CiAgICAgfSwKIAotICAgIG9uRm9ybUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IG9uQmVuY2htYXJrT3B0aW9uc0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKGV2ZW50LnRhcmdldC5uYW1lID09ICJhZGp1c3RtZW50IikgewogICAgICAgICAgICAg
c3VpdGVzTWFuYWdlci51cGRhdGVFZGl0c0VsZW1lbnRzU3RhdGUoKTsKQEAgLTM0NiwyMiArMzQ3
LDI4IEBAIFV0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIs
IHsKICAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUoInJlc3VsdHMtaGVhZGVy
IiwgSGVhZGVycy50ZXN0TmFtZSwgZGF0YSk7CiAgICAgICAgIHNlY3Rpb25zTWFuYWdlci5wb3B1
bGF0ZVRhYmxlKCJyZXN1bHRzLXNjb3JlIiwgSGVhZGVycy5zY29yZSwgZGF0YSk7CiAgICAgICAg
IHNlY3Rpb25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLWRhdGEiLCBIZWFkZXJzLmRl
dGFpbHMsIGRhdGEpOworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJlc3Vs
dHMiLCB0cnVlKTsKKworICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZy
b21KU09OKGRhdGFbMF0pOworICAgIH0sCisKKyAgICBzaG93SlNPTlJlc3VsdHM6IGZ1bmN0aW9u
KCkKKyAgICB7CiAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyZXN1bHRzLWpzb24g
dGV4dGFyZWEiKS50ZXh0Q29udGVudCA9IEpTT04uc3RyaW5naWZ5KGJlbmNobWFya1J1bm5lckNs
aWVudC5yZXN1bHRzLmRhdGEsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgIGlm
ICh0eXBlb2YgdmFsdWUgPT0gIm51bWJlciIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
LnRvRml4ZWQoMik7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0pOwotICAg
ICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJlc3VsdHMiLCB0cnVlKTsKLQotICAg
ICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OKGRhdGFbMF0pOwor
ICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1qc29uIGJ1dHRvbiIpLnJl
bW92ZSgpOworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1qc29uIGRp
diIpLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwogICAgIH0sCiAKLSAgICBzaG93VGVzdEdy
YXBoOiBmdW5jdGlvbih0ZXN0TmFtZSwgc2NvcmUsIG1lYW4sIGF4ZXMsIHNhbXBsZXMsIHNhbXBs
aW5nVGltZU9mZnNldCkKKyAgICBzaG93VGVzdEdyYXBoOiBmdW5jdGlvbih0ZXN0TmFtZSwgc2Nv
cmUsIG1lYW4sIGdyYXBoRGF0YSkKICAgICB7CiAgICAgICAgIHNlY3Rpb25zTWFuYWdlci5zZXRT
ZWN0aW9uSGVhZGVyKCJ0ZXN0LWdyYXBoIiwgdGVzdE5hbWUpOwogICAgICAgICBzZWN0aW9uc01h
bmFnZXIuc2V0U2VjdGlvblNjb3JlKCJ0ZXN0LWdyYXBoIiwgc2NvcmUsIG1lYW4pOwogICAgICAg
ICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtZ3JhcGgiLCB0cnVlKTsKLSAgICAg
ICAgZ3JhcGgoIiN0ZXN0LWdyYXBoLWRhdGEiLCBuZXcgSW5zZXRzKDEwLCAyMCwgMzAsIDQwKSwg
YXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAgICAgICAgdGhpcy51cGRhdGVH
cmFwaERhdGEoZ3JhcGhEYXRhKTsKICAgICB9CiB9KTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5l
ci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2JlbmNobWFyay1ydW5uZXIuanMKaW5kZXggMzc2YjUxYjI1NWNhOTY4YjNiZmZmM2U2YmU5M2M4
NDk0Yzc1YzJlYS4uOGZkMTZmNWIzYjMxYTIzZDVmZWE4MjY4ZTYyNThlYmRmM2E4NWYwNCAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYmVuY2htYXJrLXJ1bm5lci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCkBAIC05Niw3ICs5Niw3
IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBiZW5jaG1hcmsg
PSBuZXcgY29udGVudFdpbmRvdy5iZW5jaG1hcmtDbGFzcyhvcHRpb25zKTsKICAgICAgICAgYmVu
Y2htYXJrLnJ1bigpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgewogICAgICAgICAgICAgdmFyIHNh
bXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwge307Ci0gICAgICAg
ICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci50b0pTT04odHJ1ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci5wcm9jZXNzKG9wdGlvbnMp
OwogICAgICAgICAgICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gPSBzYW1wbGVy
czsKIAogICAgICAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQuZGlkUnVu
VGVzdCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2dyYXBoLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanMKaW5kZXggMDIxZjVmNWQ2NjlkZTAwZmVmMzlkMmU5
MmNjYjM5YmMwNDY1NWMxYy4uYzJmYTAzZDNkZTJmMWUyZmI4MjkxMTVjNTVmOTliMWUzOGE3MGFh
YyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvZ3JhcGguanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291
cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanMKQEAgLTEsMTQyICsxLDI1MiBAQAotZnVuY3Rpb24g
Z3JhcGgoc2VsZWN0b3IsIG1hcmdpbnMsIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNl
dCkKLXsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3Ip
OwotICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gJyc7Ci0KLSAgICB2YXIgc2l6ZSA9IFBvaW50LmVs
ZW1lbnRDbGllbnRTaXplKGVsZW1lbnQpLnN1YnRyYWN0KG1hcmdpbnMuc2l6ZSk7Ci0KLSAgICB2
YXIgeCA9IGQzLnNjYWxlLmxpbmVhcigpCi0gICAgICAgICAgICAucmFuZ2UoWzAsIHNpemUud2lk
dGhdKQotICAgICAgICAgICAgLmRvbWFpbihkMy5leHRlbnQoc2FtcGxlcywgZnVuY3Rpb24oZCkg
eyByZXR1cm4gZC50aW1lT2Zmc2V0OyB9KSk7ICAgICAgICAgICAgCi0KLSAgICB2YXIgeUxlZnQg
PSBkMy5zY2FsZS5saW5lYXIoKQotICAgICAgICAgICAgLnJhbmdlKFtzaXplLmhlaWdodCwgMF0p
Ci0gICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoc2FtcGxlcywgZnVuY3Rpb24oZCkgeyBy
ZXR1cm4gZC52YWx1ZXNbMF07IH0pXSk7Ci0KLSAgICB2YXIgeVJpZ2h0ID0gZDMuc2NhbGUubGlu
ZWFyKCkKLSAgICAgICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQotICAgICAgICAgICAg
LmRvbWFpbihbMCwgZDMubWF4KHNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudmFsdWVz
WzFdOyB9KV0pOwotCi0gICAgdmFyIHhBeGlzID0gZDMuc3ZnLmF4aXMoKQotICAgICAgICAgICAg
LnNjYWxlKHgpCi0gICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKLQotICAgIHZhciB5QXhp
c0xlZnQgPSBkMy5zdmcuYXhpcygpCi0gICAgICAgICAgICAuc2NhbGUoeUxlZnQpCi0gICAgICAg
ICAgICAub3JpZW50KCJsZWZ0Iik7Ci0KLSAgICB2YXIgeUF4aXNSaWdodCA9IGQzLnN2Zy5heGlz
KCkKLSAgICAgICAgICAgIC5zY2FsZSh5UmlnaHQpCi0gICAgICAgICAgICAub3JpZW50KCJyaWdo
dCIpOwotCi0gICAgdmFyIGxpbmVMZWZ0ID0gZDMuc3ZnLmxpbmUoKQotICAgICAgICAgICAgLngo
ZnVuY3Rpb24oZCkgeyByZXR1cm4geChkLnRpbWVPZmZzZXQpOyB9KQotICAgICAgICAgICAgLnko
ZnVuY3Rpb24oZCkgeyByZXR1cm4geUxlZnQoZC52YWx1ZXNbMF0pOyB9KTsKLQotICAgIHZhciBs
aW5lUmlnaHQgPSBkMy5zdmcubGluZSgpCi0gICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJl
dHVybiB4KGQudGltZU9mZnNldCk7IH0pCi0gICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJl
dHVybiB5UmlnaHQoZC52YWx1ZXNbMV0pOyB9KTsKLQotICAgIHNhbXBsZXMuZm9yRWFjaChmdW5j
dGlvbihkKSB7Ci0gICAgICAgIGQudGltZU9mZnNldCA9ICtkLnRpbWVPZmZzZXQ7Ci0gICAgICAg
IGQudmFsdWVzWzBdID0gK2QudmFsdWVzWzBdOwotICAgICAgICBkLnZhbHVlc1sxXSA9ICtkLnZh
bHVlc1sxXTsgICAgICAgIAotICAgIH0pOyAgICAKLQotICAgIHZhciBzYW1wbGVkU2FtcGxlcyA9
IHNhbXBsZXMuZmlsdGVyKGZ1bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJuIGQudGltZU9mZnNl
dCA+PSBzYW1wbGluZ1RpbWVPZmZzZXQ7Ci0gICAgfSk7Ci0gICAgCi0gICAgdmFyIG1lYW5MZWZ0
ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rpb24oZCkgewotICAgICAgICByZXR1cm4g
K2QudmFsdWVzWzBdOwotICAgIH0pOwotCi0gICAgdmFyIG1lYW5SaWdodCA9IGQzLm1lYW4oc2Ft
cGxlZFNhbXBsZXMsIGZ1bmN0aW9uKGQpIHsKLSAgICAgICAgcmV0dXJuICtkLnZhbHVlc1sxXTsK
LSAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICB2YXIgc3ZnID0gZDMu
c2VsZWN0KHNlbGVjdG9yKS5hcHBlbmQoInN2ZyIpCi0gICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNp
emUud2lkdGggKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQotICAgICAgICAuYXR0cigi
aGVpZ2h0Iiwgc2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQotICAg
ICAgICAuYXBwZW5kKCJnIikKLSAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNs
YXRlKCIgKyBtYXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5zLnRvcCArICIpIik7Ci0KLSAgICAv
LyB4LWF4aXMKLSAgICBzdmcuYXBwZW5kKCJnIikKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgIngg
YXhpcyIpCi0gICAgICAgIC5hdHRyKCJmaWxsIiwgInJnYigyMzUsIDIzNSwgMjM1KSIpCi0gICAg
ICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKDAsIiArIHNpemUuaGVpZ2h0ICsgIiki
KQotICAgICAgICAuY2FsbCh4QXhpcykKLSAgICAgICAgLmFwcGVuZCgidGV4dCIpCi0gICAgICAg
ICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQotICAgICAgICAgICAgLmF0dHIoIngiLCBzaXpl
LndpZHRoKQotICAgICAgICAgICAgLmF0dHIoInkiLCAtNikKK1V0aWxpdGllcy5leHRlbmRPYmpl
Y3Qod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIsIHsKKyAgICB1cGRhdGVHcmFwaERhdGE6IGZ1
bmN0aW9uKGdyYXBoRGF0YSkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3QtZ3JhcGgtZGF0YSIpOworICAgICAgICBlbGVtZW50LmlubmVy
SFRNTCA9ICIiOworICAgICAgICB2YXIgbWFyZ2lucyA9IG5ldyBJbnNldHMoMTAsIDMwLCAzMCwg
NDApOworICAgICAgICB2YXIgc2l6ZSA9IFBvaW50LmVsZW1lbnRDbGllbnRTaXplKGVsZW1lbnQp
LnN1YnRyYWN0KG1hcmdpbnMuc2l6ZSk7CisKKyAgICAgICAgdmFyIHN2ZyA9IGQzLnNlbGVjdCgi
I3Rlc3QtZ3JhcGgtZGF0YSIpLmFwcGVuZCgic3ZnIikKKyAgICAgICAgICAgIC5hdHRyKCJ3aWR0
aCIsIHNpemUud2lkdGggKyBtYXJnaW5zLmxlZnQgKyBtYXJnaW5zLnJpZ2h0KQorICAgICAgICAg
ICAgLmF0dHIoImhlaWdodCIsIHNpemUuaGVpZ2h0ICsgbWFyZ2lucy50b3AgKyBtYXJnaW5zLmJv
dHRvbSkKKyAgICAgICAgICAgIC5hcHBlbmQoImciKQorICAgICAgICAgICAgICAgIC5hdHRyKCJ0
cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyBtYXJnaW5zLmxlZnQgKyAiLCIgKyBtYXJnaW5zLnRv
cCArICIpIik7CisKKyAgICAgICAgdmFyIGF4ZXMgPSBncmFwaERhdGEuYXhlczsKKyAgICAgICAg
dmFyIHRhcmdldEZQUyA9IGdyYXBoRGF0YS50YXJnZXRGUFM7CisKKyAgICAgICAgLy8gQXhpcyBz
Y2FsZXMKKyAgICAgICAgdmFyIHggPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAgICAgICAg
IC5yYW5nZShbMCwgc2l6ZS53aWR0aF0pCisgICAgICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMu
bWF4KGdyYXBoRGF0YS5zYW1wbGVzLCBmdW5jdGlvbihzKSB7IHJldHVybiBzLnRpbWU7IH0pXSk7
CisgICAgICAgIHZhciB5TGVmdCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAgICAg
LnJhbmdlKFtzaXplLmhlaWdodCwgMF0pCisgICAgICAgICAgICAgICAgLmRvbWFpbihbMCwgZDMu
bWF4KGdyYXBoRGF0YS5zYW1wbGVzLCBmdW5jdGlvbihzKSB7IHJldHVybiBzLmNvbXBsZXhpdHk7
IH0pXSk7CisgICAgICAgIHZhciB5UmlnaHQgPSBkMy5zY2FsZS5saW5lYXIoKQorICAgICAgICAg
ICAgICAgIC5yYW5nZShbc2l6ZS5oZWlnaHQsIDBdKQorICAgICAgICAgICAgICAgIC5kb21haW4o
WzAsIDYwXSk7CisKKyAgICAgICAgLy8gQXhlcworICAgICAgICB2YXIgeEF4aXMgPSBkMy5zdmcu
YXhpcygpCisgICAgICAgICAgICAgICAgLnNjYWxlKHgpCisgICAgICAgICAgICAgICAgLm9yaWVu
dCgiYm90dG9tIik7CisgICAgICAgIHZhciB5QXhpc0xlZnQgPSBkMy5zdmcuYXhpcygpCisgICAg
ICAgICAgICAgICAgLnNjYWxlKHlMZWZ0KQorICAgICAgICAgICAgICAgIC5vcmllbnQoImxlZnQi
KTsKKyAgICAgICAgdmFyIHlBeGlzUmlnaHQgPSBkMy5zdmcuYXhpcygpCisgICAgICAgICAgICAg
ICAgLnNjYWxlKHlSaWdodCkKKyAgICAgICAgICAgICAgICAub3JpZW50KCJyaWdodCIpOworCisg
ICAgICAgIC8vIHgtYXhpcworICAgICAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgICAgIC5h
dHRyKCJjbGFzcyIsICJ4IGF4aXMiKQogICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAicmdiKDIz
NSwgMjM1LCAyMzUpIikKLSAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikK
LSAgICAgICAgICAgIC50ZXh0KCJ0aW1lIik7Ci0gICAgICAgICAgICAgICAgIAotICAgIC8vIHlM
ZWZ0LWF4aXMKLSAgICBzdmcuYXBwZW5kKCJnIikKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInkg
YXhpcyIpCi0gICAgICAgIC5hdHRyKCJmaWxsIiwgIiM3QURENDkiKQotICAgICAgICAuY2FsbCh5
QXhpc0xlZnQpCi0gICAgICAgIC5hcHBlbmQoInRleHQiKQotICAgICAgICAgICAgLmF0dHIoImNs
YXNzIiwgImxhYmVsIikKLSAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05
MCkiKQotICAgICAgICAgICAgLmF0dHIoInkiLCA2KQorICAgICAgICAgICAgLmF0dHIoInRyYW5z
Zm9ybSIsICJ0cmFuc2xhdGUoMCwiICsgc2l6ZS5oZWlnaHQgKyAiKSIpCisgICAgICAgICAgICAu
Y2FsbCh4QXhpcykKKyAgICAgICAgICAgIC5hcHBlbmQoInRleHQiKQorICAgICAgICAgICAgICAg
IC5hdHRyKCJjbGFzcyIsICJsYWJlbCIpCisgICAgICAgICAgICAgICAgLmF0dHIoIngiLCBzaXpl
LndpZHRoKQorICAgICAgICAgICAgICAgIC5hdHRyKCJ5IiwgLTYpCisgICAgICAgICAgICAgICAg
LmF0dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAyMzUpIikKKyAgICAgICAgICAgICAgICAuc3R5
bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAgICAgLnRleHQoInRpbWUiKTsK
KworICAgICAgICAvLyB5TGVmdC1heGlzCisgICAgICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAg
ICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhpcyIpCiAgICAgICAgICAgICAuYXR0cigiZmlsbCIs
ICIjN0FERDQ5IikKLSAgICAgICAgICAgIC5hdHRyKCJkeSIsICIuNzFlbSIpCi0gICAgICAgICAg
ICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCi0gICAgICAgICAgICAudGV4dChheGVzWzBd
KTsKLQotICAgIC8vIHlSaWdodC1heGlzCi0gICAgc3ZnLmFwcGVuZCgiZyIpCi0gICAgICAgIC5h
dHRyKCJjbGFzcyIsICJ5IGF4aXMiKQotICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikK
LSAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUud2lkdGggKyAi
LCAwKSIpCi0gICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCi0gICAgICAgIC5hcHBlbmQoInRleHQi
KQotICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKLSAgICAgICAgICAgIC5hdHRy
KCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQotICAgICAgICAgICAgLmF0dHIoInkiLCA2KQor
ICAgICAgICAgICAgLmNhbGwoeUF4aXNMZWZ0KQorICAgICAgICAgICAgLmFwcGVuZCgidGV4dCIp
CisgICAgICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVsIikKKyAgICAgICAgICAgICAg
ICAuYXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTApIikKKyAgICAgICAgICAgICAgICAuYXR0
cigieSIsIDYpCisgICAgICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAiIzdBREQ0OSIpCisgICAg
ICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAgICAgICAgICAgICAuc3R5bGUo
InRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAgICAgLnRleHQoYXhlc1swXSk7CisK
KyAgICAgICAgLy8geVJpZ2h0LWF4aXMKKyAgICAgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAg
ICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKICAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwg
IiNGQTQ5MjUiKQotICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKLSAgICAgICAgICAg
IC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5kIikKLSAgICAgICAgICAgIC50ZXh0KGF4ZXNbMV0p
OwotCi0gICAgLy8gbGVmdC1tZWFuCi0gICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQotICAgICAg
ICAuYXR0cigieDEiLCB4KDApKQotICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQotICAg
ICAgICAuYXR0cigieTEiLCB5TGVmdChtZWFuTGVmdCkpCi0gICAgICAgIC5hdHRyKCJ5MiIsIHlM
ZWZ0KG1lYW5MZWZ0KSkKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgImxlZnQtbWVhbiIpOwotCi0g
ICAgLy8gcmlnaHQtbWVhbgotICAgIHN2Zy5hcHBlbmQoInN2ZzpsaW5lIikKLSAgICAgICAgLmF0
dHIoIngxIiwgeCgwKSkKLSAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkKLSAgICAgICAg
LmF0dHIoInkxIiwgeVJpZ2h0KG1lYW5SaWdodCkpCi0gICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdo
dChtZWFuUmlnaHQpKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtbWVhbiIpOyAgICAg
ICAgCi0KLSAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQKLSAgICBzdmcuYXBwZW5kKCJsaW5lIikK
LSAgICAgICAgLmF0dHIoIngxIiwgeChzYW1wbGluZ1RpbWVPZmZzZXQpKQotICAgICAgICAuYXR0
cigieDIiLCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCi0gICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0
KDApKQotICAgICAgICAuYXR0cigieTIiLCB5TGVmdCh5QXhpc0xlZnQuc2NhbGUoKS5kb21haW4o
KVsxXSkpCi0gICAgICAgIC5hdHRyKCJjbGFzcyIsICJzYW1wbGUtdGltZSIpOwotCi0gICAgLy8g
bGVmdC1zYW1wbGVzCi0gICAgc3ZnLmFwcGVuZCgicGF0aCIpCi0gICAgICAgIC5kYXR1bShzYW1w
bGVzKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1zYW1wbGVzIikKLSAgICAgICAgLmF0
dHIoImQiLCBsaW5lTGVmdCk7Ci0gICAgICAgIAotICAgIC8vIHJpZ2h0LXNhbXBsZXMKLSAgICBz
dmcuYXBwZW5kKCJwYXRoIikKLSAgICAgICAgLmRhdHVtKHNhbXBsZXMpCi0gICAgICAgIC5hdHRy
KCJjbGFzcyIsICJyaWdodC1zYW1wbGVzIikKLSAgICAgICAgLmF0dHIoImQiLCBsaW5lUmlnaHQp
OwotfQorICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIHNpemUu
d2lkdGggKyAiLCAwKSIpCisgICAgICAgICAgICAuY2FsbCh5QXhpc1JpZ2h0KQorICAgICAgICAg
ICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxhYmVs
IikKKyAgICAgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInJvdGF0ZSgtOTApIikKKyAg
ICAgICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAgICAgLmF0dHIoImZpbGwi
LCAiI0ZBNDkyNSIpCisgICAgICAgICAgICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKKyAgICAg
ICAgICAgICAgICAuc3R5bGUoInRleHQtYW5jaG9yIiwgImVuZCIpCisgICAgICAgICAgICAgICAg
LnRleHQoYXhlc1sxXSk7CisKKyAgICAgICAgLy8gc2FtcGxpbmdUaW1lT2Zmc2V0CisgICAgICAg
IHN2Zy5hcHBlbmQoImxpbmUiKQorICAgICAgICAgICAgLmF0dHIoIngxIiwgeChncmFwaERhdGEu
c2FtcGxpbmdUaW1lT2Zmc2V0KSkKKyAgICAgICAgICAgIC5hdHRyKCJ4MiIsIHgoZ3JhcGhEYXRh
LnNhbXBsaW5nVGltZU9mZnNldCkpCisgICAgICAgICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkK
KyAgICAgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRvbWFpbigp
WzFdKSkKKyAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIsICJzYW1wbGUtdGltZSBtYXJrZXIiKTsK
KworICAgICAgICAvLyBsZWZ0LW1lYW4KKyAgICAgICAgc3ZnLmFwcGVuZCgibGluZSIpCisgICAg
ICAgICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53
aWR0aCkKKyAgICAgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KGdyYXBoRGF0YS5tZWFuWzBdKSkK
KyAgICAgICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KGdyYXBoRGF0YS5tZWFuWzBdKSkKKyAgICAg
ICAgICAgIC5hdHRyKCJjbGFzcyIsICJsZWZ0LW1lYW4gbWVhbiIpOworCisgICAgICAgIC8vIHJp
Z2h0LW1lYW4KKyAgICAgICAgc3ZnLmFwcGVuZCgibGluZSIpCisgICAgICAgICAgICAuYXR0cigi
eDEiLCB4KDApKQorICAgICAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkKKyAgICAgICAg
ICAgIC5hdHRyKCJ5MSIsIHlSaWdodChncmFwaERhdGEubWVhblsxXSkpCisgICAgICAgICAgICAu
YXR0cigieTIiLCB5UmlnaHQoZ3JhcGhEYXRhLm1lYW5bMV0pKQorICAgICAgICAgICAgLmF0dHIo
ImNsYXNzIiwgInJpZ2h0LW1lYW4gbWVhbiIpOworCisgICAgICAgIC8vIHJpZ2h0LXRhcmdldAor
ICAgICAgICBpZiAodGFyZ2V0RlBTKSB7CisgICAgICAgICAgICBzdmcuYXBwZW5kKCJsaW5lIikK
KyAgICAgICAgICAgICAgICAuYXR0cigieDEiLCB4KDApKQorICAgICAgICAgICAgICAgIC5hdHRy
KCJ4MiIsIHNpemUud2lkdGgpCisgICAgICAgICAgICAgICAgLmF0dHIoInkxIiwgeVJpZ2h0KHRh
cmdldEZQUykpCisgICAgICAgICAgICAgICAgLmF0dHIoInkyIiwgeVJpZ2h0KHRhcmdldEZQUykp
CisgICAgICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgInRhcmdldC1mcHMgbWFya2VyIik7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBDdXJzb3IKKyAgICAgICAgdmFyIGN1cnNvckdyb3VwID0g
c3ZnLmFwcGVuZCgiZyIpLmF0dHIoImlkIiwgImN1cnNvciIpOworICAgICAgICBjdXJzb3JHcm91
cC5hcHBlbmQoImxpbmUiKQorICAgICAgICAgICAgLmF0dHIoIngxIiwgMCkKKyAgICAgICAgICAg
IC5hdHRyKCJ4MiIsIDApCisgICAgICAgICAgICAuYXR0cigieTEiLCB5TGVmdCgwKSkKKyAgICAg
ICAgICAgIC5hdHRyKCJ5MiIsIHlMZWZ0KDApKTsKKworICAgICAgICAvLyBEYXRhCisgICAgICAg
IHZhciBhbGxEYXRhID0gZ3JhcGhEYXRhLnNhbXBsZXM7CisgICAgICAgIHZhciBmaWx0ZXJlZERh
dGEgPSBncmFwaERhdGEuc2FtcGxlcy5maWx0ZXIoZnVuY3Rpb24gKHNhbXBsZSkgeworICAgICAg
ICAgICAgcmV0dXJuICJzbW9vdGhlZEZQUyIgaW4gc2FtcGxlOworICAgICAgICB9KTsKKworICAg
ICAgICBmdW5jdGlvbiBhZGREYXRhKG5hbWUsIGRhdGEsIHlDb29yZGluYXRlQ2FsbGJhY2ssIHBv
aW50UmFkaXVzLCBvbWl0TGluZSkgeworICAgICAgICAgICAgdmFyIHN2Z0dyb3VwID0gc3ZnLmFw
cGVuZCgiZyIpLmF0dHIoImlkIiwgbmFtZSk7CisgICAgICAgICAgICBpZiAoIW9taXRMaW5lKSB7
CisgICAgICAgICAgICAgICAgc3ZnR3JvdXAuYXBwZW5kKCJwYXRoIikKKyAgICAgICAgICAgICAg
ICAgICAgLmRhdHVtKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJkIiwgZDMuc3Zn
LmxpbmUoKQorICAgICAgICAgICAgICAgICAgICAgICAgLngoZnVuY3Rpb24oZCkgeyByZXR1cm4g
eChkLnRpbWUpOyB9KQorICAgICAgICAgICAgICAgICAgICAgICAgLnkoeUNvb3JkaW5hdGVDYWxs
YmFjaykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3ZnR3JvdXAuc2VsZWN0QWxsKCJj
aXJjbGUiKQorICAgICAgICAgICAgICAgIC5kYXRhKGRhdGEpCisgICAgICAgICAgICAgICAgLmVu
dGVyKCkKKyAgICAgICAgICAgICAgICAuYXBwZW5kKCJjaXJjbGUiKQorICAgICAgICAgICAgICAg
IC5hdHRyKCJjeCIsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lKTsgfSkKKyAgICAgICAg
ICAgICAgICAuYXR0cigiY3kiLCB5Q29vcmRpbmF0ZUNhbGxiYWNrKQorICAgICAgICAgICAgICAg
IC5hdHRyKCJyIiwgcG9pbnRSYWRpdXMpOworCisgICAgICAgICAgICBjdXJzb3JHcm91cC5hcHBl
bmQoImNpcmNsZSIpCisgICAgICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgbmFtZSkKKyAgICAg
ICAgICAgICAgICAuYXR0cigiciIsIHBvaW50UmFkaXVzICsgMik7CisgICAgICAgIH0KKworICAg
ICAgICBhZGREYXRhKCJjb21wbGV4aXR5IiwgYWxsRGF0YSwgZnVuY3Rpb24oZCkgeyByZXR1cm4g
eUxlZnQoZC5jb21wbGV4aXR5KTsgfSwgMik7CisgICAgICAgIGFkZERhdGEoInJhd0ZQUyIsIGFs
bERhdGEsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLmZwcyk7IH0sIDEpOworICAgICAg
ICBhZGREYXRhKCJmaWx0ZXJlZEZQUyIsIGZpbHRlcmVkRGF0YSwgZnVuY3Rpb24oZCkgeyByZXR1
cm4geVJpZ2h0KGQuc21vb3RoZWRGUFMpOyB9LCAyKTsKKyAgICAgICAgYWRkRGF0YSgiaW50ZXJ2
YWxGUFMiLCBmaWx0ZXJlZERhdGEsIGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLmludGVy
dmFsRlBTKTsgfSwgMywgdHJ1ZSk7CisKKyAgICAgICAgLy8gQXJlYSB0byBoYW5kbGUgbW91c2Ug
ZXZlbnRzCisgICAgICAgIHZhciBhcmVhID0gc3ZnLmFwcGVuZCgicmVjdCIpCisgICAgICAgICAg
ICAuYXR0cigiZmlsbCIsICJ0cmFuc3BhcmVudCIpCisgICAgICAgICAgICAuYXR0cigieCIsIDAp
CisgICAgICAgICAgICAuYXR0cigieSIsIDApCisgICAgICAgICAgICAuYXR0cigid2lkdGgiLCBz
aXplLngpCisgICAgICAgICAgICAuYXR0cigiaGVpZ2h0Iiwgc2l6ZS55KTsKKworICAgICAgICB2
YXIgdGltZUJpc2VjdCA9IGQzLmJpc2VjdG9yKGZ1bmN0aW9uKGQpIHsgcmV0dXJuIGQudGltZTsg
fSkucmlnaHQ7CisgICAgICAgIHZhciBzdGF0c1RvSGlnaGxpZ2h0ID0gWyJjb21wbGV4aXR5Iiwg
InJhd0ZQUyIsICJmaWx0ZXJlZEZQUyIsICJpbnRlcnZhbEZQUyJdOworICAgICAgICBhcmVhLm9u
KCJtb3VzZW92ZXIiLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJjdXJzb3IiKS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LWdyYXBoIG5hdiIpLmNsYXNzTGlzdC5yZW1v
dmUoImhpZGUtZGF0YSIpOworICAgICAgICB9KS5vbigibW91c2VvdXQiLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjdXJzb3IiKS5jbGFzc0xpc3Qu
YWRkKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0
LWdyYXBoIG5hdiIpLmNsYXNzTGlzdC5hZGQoImhpZGUtZGF0YSIpOworICAgICAgICB9KS5vbigi
bW91c2Vtb3ZlIiwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgZm9ybSA9IGRvY3VtZW50
LmZvcm1zWyJncmFwaC1vcHRpb25zIl0uZWxlbWVudHM7CisKKyAgICAgICAgICAgIHZhciBteF9k
b21haW4gPSB4LmludmVydChkMy5tb3VzZSh0aGlzKVswXSk7CisgICAgICAgICAgICB2YXIgaW5k
ZXggPSBNYXRoLm1pbih0aW1lQmlzZWN0KGFsbERhdGEsIG14X2RvbWFpbiksIGFsbERhdGEubGVu
Z3RoIC0gMSk7CisgICAgICAgICAgICB2YXIgZGF0YSA9IGFsbERhdGFbaW5kZXhdOworICAgICAg
ICAgICAgdmFyIGN1cnNvcl94ID0geChkYXRhLnRpbWUpOworICAgICAgICAgICAgdmFyIGN1cnNv
cl95ID0geUF4aXNSaWdodC5zY2FsZSgpLmRvbWFpbigpWzFdOworICAgICAgICAgICAgaWYgKGZv
cm1bInJhd0ZQUyJdLmNoZWNrZWQpCisgICAgICAgICAgICAgICAgY3Vyc29yX3kgPSBNYXRoLm1h
eChjdXJzb3JfeSwgZGF0YS5mcHMpOworICAgICAgICAgICAgY3Vyc29yR3JvdXAuc2VsZWN0KCJs
aW5lIikKKyAgICAgICAgICAgICAgICAuYXR0cigieDEiLCBjdXJzb3JfeCkKKyAgICAgICAgICAg
ICAgICAuYXR0cigieDIiLCBjdXJzb3JfeCkKKyAgICAgICAgICAgICAgICAuYXR0cigieTIiLCB5
UmlnaHQoY3Vyc29yX3kpKTsKKworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
I3Rlc3QtZ3JhcGggbmF2IC50aW1lIikuaW5uZXJUZXh0ID0gZGF0YS50aW1lLnRvRml4ZWQoMykg
KyAicyAoIiArIGluZGV4ICsgIikiOworICAgICAgICAgICAgc3RhdHNUb0hpZ2hsaWdodC5mb3JF
YWNoKGZ1bmN0aW9uKG5hbWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LWdyYXBoIG5hdiAuIiArIG5hbWUpOworICAgICAgICAg
ICAgICAgIHZhciBjb250ZW50ID0gIiI7CisgICAgICAgICAgICAgICAgdmFyIGRhdGFfeSA9IG51
bGw7CisgICAgICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSAiY29tcGxleGl0eSI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLmNvbXBs
ZXhpdHk7CisgICAgICAgICAgICAgICAgICAgIGRhdGFfeSA9IHlMZWZ0KGRhdGEuY29tcGxleGl0
eSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgInJh
d0ZQUyI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLmZwcy50b0ZpeGVkKDIp
OworICAgICAgICAgICAgICAgICAgICBkYXRhX3kgPSB5UmlnaHQoZGF0YS5mcHMpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICJmaWx0ZXJlZEZQUyI6
CisgICAgICAgICAgICAgICAgICAgIGlmICgic21vb3RoZWRGUFMiIGluIGRhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLnNtb290aGVkRlBTLnRvRml4ZWQoMik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3kgPSB5UmlnaHQoZGF0YS5zbW9vdGhlZEZQ
Uyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSAiaW50ZXJ2YWxGUFMiOgorICAgICAgICAgICAgICAgICAgICBp
ZiAoImludGVydmFsRlBTIiBpbiBkYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50ID0gZGF0YS5pbnRlcnZhbEZQUy50b0ZpeGVkKDIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YV95ID0geVJpZ2h0KGRhdGEuaW50ZXJ2YWxGUFMpOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gY29udGVudDsKKworICAgICAgICAgICAg
ICAgIGlmIChmb3JtW25hbWVdLmNoZWNrZWQgJiYgZGF0YV95ICE9PSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgICAgIGN1cnNvckdyb3VwLnNlbGVjdCgiLiIgKyBuYW1lKQorICAgICAgICAgICAg
ICAgICAgICAgICAgLmF0dHIoImN4IiwgY3Vyc29yX3gpCisgICAgICAgICAgICAgICAgICAgICAg
ICAuYXR0cigiY3kiLCBkYXRhX3kpOworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjY3Vyc29yIC4iICsgbmFtZSkuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNjdXJzb3IgLiIgKyBuYW1lKS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5vbkdyYXBoT3B0aW9u
c0NoYW5nZWQoKTsKKyAgICB9LAorCisgICAgb25HcmFwaE9wdGlvbnNDaGFuZ2VkOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgdmFyIGZvcm0gPSBkb2N1bWVudC5mb3Jtc1siZ3JhcGgtb3B0aW9ucyJd
LmVsZW1lbnRzOworCisgICAgICAgIGZ1bmN0aW9uIHNob3dPckhpZGVOb2Rlcyhpc1Nob3duLCBz
ZWxlY3RvcikgeworICAgICAgICAgICAgdmFyIG5vZGVMaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbChzZWxlY3Rvcik7CisgICAgICAgICAgICBpZiAoaXNTaG93bikgeworICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxpc3QubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICAgICAgICAgIG5vZGVMaXN0W2ldLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5v
ZGVMaXN0Lmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBub2RlTGlzdFtpXS5jbGFz
c0xpc3QuYWRkKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHNob3dPckhpZGVOb2Rlcyhmb3JtWyJtYXJrZXJzIl0uY2hlY2tlZCwgIi5tYXJrZXIiKTsKKyAg
ICAgICAgc2hvd09ySGlkZU5vZGVzKGZvcm1bImF2ZXJhZ2VzIl0uY2hlY2tlZCwgIi5tZWFuIik7
CisgICAgICAgIHNob3dPckhpZGVOb2Rlcyhmb3JtWyJjb21wbGV4aXR5Il0uY2hlY2tlZCwgIiNj
b21wbGV4aXR5Iik7CisgICAgICAgIHNob3dPckhpZGVOb2Rlcyhmb3JtWyJyYXdGUFMiXS5jaGVj
a2VkLCAiI3Jhd0ZQUyIpOworICAgICAgICBzaG93T3JIaWRlTm9kZXMoZm9ybVsiZmlsdGVyZWRG
UFMiXS5jaGVja2VkLCAiI2ZpbHRlcmVkRlBTIik7CisgICAgICAgIHNob3dPckhpZGVOb2Rlcyhm
b3JtWyJpbnRlcnZhbEZQUyJdLmNoZWNrZWQsICIjaW50ZXJ2YWxGUFMiKTsKKyAgICB9Cit9KTsK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5z
aW9ucy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9u
cy5qcwppbmRleCA4NGNjMWZkMWNlMDE2ZDE0MzhjYTYxNzZmMzgyOTBmMGQzN2VlYTFmLi5mMzli
Y2FmNjA2Y2Y3OTFlYzhiMzQwMDljNjY3NWZhMjljMGI2NGM3IDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKKysrIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCkBAIC0yNDgsNyAr
MjQ4LDcgQEAgUmVzdWx0c0Rhc2hib2FyZC5wcm90b3R5cGUgPQogICAgICAgICB0aGlzLl9pdGVy
YXRpb25zU2FtcGxlcnMucHVzaChzdWl0ZXNTYW1wbGVycyk7CiAgICAgfSwKIAotICAgIF9wcm9j
ZXNzRGF0YTogZnVuY3Rpb24oc3RhdGlzdGljcywgZ3JhcGgpCisgICAgX3Byb2Nlc3NEYXRhOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgaXRlcmF0aW9uc1Jlc3VsdHMgPSBbXTsKICAg
ICAgICAgdmFyIGl0ZXJhdGlvbnNTY29yZXMgPSBbXTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBSZXN1
bHRzRGFzaGJvYXJkLnByb3RvdHlwZSA9CiAgICAgewogICAgICAgICBpZiAodGhpcy5fcHJvY2Vz
c2VkRGF0YSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzZWREYXRhOwotICAgICAg
ICB0aGlzLl9wcm9jZXNzRGF0YSh0cnVlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fcHJvY2Vzc0Rh
dGEoKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NlZERhdGE7CiAgICAgfSwKIApAQCAt
MzQ2LDkgKzM0Niw2IEBAIFJlc3VsdHNUYWJsZS5wcm90b3R5cGUgPQogICAgICAgICB2YXIgYnV0
dG9uID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgiYnV0dG9uIiwgeyBjbGFzczog
InNtYWxsLWJ1dHRvbiIgfSwgdGQpOwogCiAgICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHNhbXBsZXMgPSBkYXRhW1N0
cmluZ3MuanNvbi5ncmFwaC5wb2ludHNdOwotICAgICAgICAgICAgdmFyIHNhbXBsaW5nVGltZU9m
ZnNldCA9IGRhdGFbU3RyaW5ncy5qc29uLmdyYXBoLnNhbXBsaW5nVGltZU9mZnNldF07Ci0gICAg
ICAgICAgICB2YXIgYXhlcyA9IFtTdHJpbmdzLnRleHQuZXhwZXJpbWVudHMuY29tcGxleGl0eSwg
U3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV07CiAgICAgICAgICAgICB2YXIgc2Nv
cmUgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uc2NvcmVdLnRvRml4ZWQoMik7CiAgICAgICAg
ICAgICB2YXIgY29tcGxleGl0eSA9IHRlc3RSZXN1bHRzW1N0cmluZ3MuanNvbi5leHBlcmltZW50
cy5jb21wbGV4aXR5XTsKICAgICAgICAgICAgIHZhciBtZWFuID0gWwpAQCAtMzYwLDcgKzM1Nywx
OSBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICBjb21wbGV4aXR5
W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0udG9GaXhlZCgyKSwKICAgICAgICAg
ICAgICAgICAiJSksIHdvcnN0IDUlOiAiLAogICAgICAgICAgICAgICAgIGNvbXBsZXhpdHlbU3Ry
aW5ncy5qc29uLm1lYXN1cmVtZW50cy5jb25jZXJuXS50b0ZpeGVkKDIpXS5qb2luKCIiKTsKLSAg
ICAgICAgICAgIGJlbmNobWFya0NvbnRyb2xsZXIuc2hvd1Rlc3RHcmFwaCh0ZXN0TmFtZSwgc2Nv
cmUsIG1lYW4sIGF4ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCk7CisKKyAgICAgICAg
ICAgIHZhciBncmFwaERhdGEgPSB7CisgICAgICAgICAgICAgICAgYXhlczogW1N0cmluZ3MudGV4
dC5leHBlcmltZW50cy5jb21wbGV4aXR5LCBTdHJpbmdzLnRleHQuZXhwZXJpbWVudHMuZnJhbWVS
YXRlXSwKKyAgICAgICAgICAgICAgICBtZWFuOiBbCisgICAgICAgICAgICAgICAgICAgIHRlc3RS
ZXN1bHRzW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21wbGV4aXR5XVtTdHJpbmdzLmpzb24u
bWVhc3VyZW1lbnRzLmF2ZXJhZ2VdLAorICAgICAgICAgICAgICAgICAgICB0ZXN0UmVzdWx0c1tT
dHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJhbWVSYXRlXVtTdHJpbmdzLmpzb24ubWVhc3VyZW1l
bnRzLmF2ZXJhZ2VdCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBzYW1wbGVz
OiBkYXRhLAorICAgICAgICAgICAgICAgIHNhbXBsaW5nVGltZU9mZnNldDogdGVzdFJlc3VsdHNb
U3RyaW5ncy5qc29uLnNhbXBsaW5nVGltZU9mZnNldF0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICh0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24udGFyZ2V0RlBTXSkKKyAgICAgICAgICAg
ICAgICBncmFwaERhdGEudGFyZ2V0RlBTID0gdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLnRhcmdl
dEZQU107CisgICAgICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dUZXN0R3JhcGgodGVz
dE5hbWUsIHNjb3JlLCBtZWFuLCBncmFwaERhdGEpOwogICAgICAgICB9KTsKIAogICAgICAgICBi
dXR0b24udGV4dENvbnRlbnQgPSBTdHJpbmdzLnRleHQucmVzdWx0cy5ncmFwaCArICIuLi4iOwpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zYW1wbGVy
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zYW1wbGVyLmpzCmlu
ZGV4IGRiMDkzNWYwNzNlYTU4MDM3NjFmNTZkNjZmYWRjNDlhMjc0NjE0ODAuLmNkMWVmZmZjY2Vh
MDFkYjhkYzcyODg5NGNlMWIzMDEzZDcyYWJiMzMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc2FtcGxlci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanMKQEAgLTIyLDEyICsyMiwxNCBAQCB2YXIg
U3RhdGlzdGljcyA9CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdmFyIHJvb3RzID0g
dmFsdWVzLm1hcChmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gIE1hdGgucG93KHZhbHVlLCAxIC8g
dmFsdWVzLmxlbmd0aCk7IH0pCiAgICAgICAgIHJldHVybiByb290cy5yZWR1Y2UoZnVuY3Rpb24o
YSwgYikgeyByZXR1cm4gYSAqIGI7IH0pOwotICAgIH0gICAKKyAgICB9CiB9CiAKIGZ1bmN0aW9u
IEV4cGVyaW1lbnQoKQogewotICAgIHRoaXMuX2luaXQoKTsKKyAgICB0aGlzLl9zdW0gPSAwOwor
ICAgIHRoaXMuX3NxdWFyZVN1bSA9IDA7CisgICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzID0gMDsK
ICAgICB0aGlzLl9tYXhIZWFwID0gQWxnb3JpdGhtLmNyZWF0ZU1heEhlYXAoRXhwZXJpbWVudC5k
ZWZhdWx0cy5DT05DRVJOX1NJWkUpOwogfQogCkBAIC0zOSwyMiArNDEsNiBAQCBFeHBlcmltZW50
LmRlZmF1bHRzID0KIAogRXhwZXJpbWVudC5wcm90b3R5cGUgPQogewotICAgIF9pbml0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9zdW0gPSAwOwotICAgICAgICB0aGlzLl9zcXVh
cmVTdW0gPSAwOwotICAgICAgICB0aGlzLl9udW1iZXJPZlNhbXBsZXMgPSAwOwotICAgIH0sCi0g
ICAgCi0gICAgLy8gQ2FsbGVkIGFmdGVyIGEgd2FybS11cCBwZXJpb2QKLSAgICBzdGFydFNhbXBs
aW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgbWVhbiA9IHRoaXMubWVhbigpOwot
ICAgICAgICB0aGlzLl9pbml0KCk7Ci0gICAgICAgIHRoaXMuX21heEhlYXAuaW5pdCgpOwotICAg
ICAgICB0aGlzLnNhbXBsZShtZWFuKTsKLSAgICB9LAotICAgIAogICAgIHNhbXBsZTogZnVuY3Rp
b24odmFsdWUpCiAgICAgewogICAgICAgICB0aGlzLl9zdW0gKz0gdmFsdWU7CkBAIC02Miw5MSAr
NDgsODIgQEAgRXhwZXJpbWVudC5wcm90b3R5cGUgPQogICAgICAgICB0aGlzLl9tYXhIZWFwLnB1
c2godmFsdWUpOwogICAgICAgICArK3RoaXMuX251bWJlck9mU2FtcGxlczsKICAgICB9LAotICAg
IAorCiAgICAgbWVhbjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFN0YXRpc3Rp
Y3Muc2FtcGxlTWVhbih0aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSk7CiAgICAgfSwK
LSAgICAKKwogICAgIHN0YW5kYXJkRGV2aWF0aW9uOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RhdGlzdGljcy51bmJpYXNlZFNhbXBsZVN0YW5kYXJkRGV2aWF0aW9uKHRoaXMu
X251bWJlck9mU2FtcGxlcywgdGhpcy5fc3VtLCB0aGlzLl9zcXVhcmVTdW0pOwogICAgIH0sCi0g
ICAgCisKICAgICBwZXJjZW50YWdlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbWVh
biA9IHRoaXMubWVhbigpOwogICAgICAgICByZXR1cm4gbWVhbiA/IHRoaXMuc3RhbmRhcmREZXZp
YXRpb24oKSAqIDEwMCAvIG1lYW4gOiAwOwogICAgIH0sCi0gICAgCisKICAgICBjb25jZXJuOiBm
dW5jdGlvbihwZXJjZW50YWdlKQogICAgIHsKICAgICAgICAgdmFyIHNpemUgPSBNYXRoLmNlaWwo
dGhpcy5fbnVtYmVyT2ZTYW1wbGVzICogcGVyY2VudGFnZSAvIDEwMCk7CiAgICAgICAgIHZhciB2
YWx1ZXMgPSB0aGlzLl9tYXhIZWFwLnZhbHVlcyhzaXplKTsKICAgICAgICAgcmV0dXJuIHZhbHVl
cy5sZW5ndGggPyB2YWx1ZXMucmVkdWNlKGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEgKyBiOyB9
KSAvIHZhbHVlcy5sZW5ndGggOiAwOwogICAgIH0sCi0gICAgCisKICAgICBzY29yZTogZnVuY3Rp
b24ocGVyY2VudGFnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBTdGF0aXN0aWNzLmdlb21ldHJp
Y01lYW4oW3RoaXMubWVhbigpLCBNYXRoLm1heCh0aGlzLmNvbmNlcm4ocGVyY2VudGFnZSksIDEp
XSk7CiAgICAgfQogfQogCi1mdW5jdGlvbiBTYW1wbGVyKGNvdW50KQorZnVuY3Rpb24gU2FtcGxl
cihzZXJpZXNDb3VudCwgZXhwZWN0ZWRTYW1wbGVDb3VudCwgcHJvY2Vzc29yKQogewotICAgIHRo
aXMuZXhwZXJpbWVudHMgPSBbXTsKLSAgICB3aGlsZSAoY291bnQtLSkKLSAgICAgICAgdGhpcy5l
eHBlcmltZW50cy5wdXNoKG5ldyBFeHBlcmltZW50KCkpOworICAgIHRoaXMuX3Byb2Nlc3NvciA9
IHByb2Nlc3NvcjsKKwogICAgIHRoaXMuc2FtcGxlcyA9IFtdOwotICAgIHRoaXMuc2FtcGxpbmdU
aW1lT2Zmc2V0ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmllc0NvdW50OyArK2kp
IHsKKyAgICAgICAgdmFyIGFycmF5ID0gbmV3IEFycmF5KGV4cGVjdGVkU2FtcGxlQ291bnQpOwor
ICAgICAgICBhcnJheS5maWxsKDApOworICAgICAgICB0aGlzLnNhbXBsZXNbaV0gPSBhcnJheTsK
KyAgICB9CisgICAgdGhpcy5zYW1wbGVDb3VudCA9IDA7CisgICAgdGhpcy5tYXJrcyA9IHt9Owog
fQogCiBTYW1wbGVyLnByb3RvdHlwZSA9CiB7Ci0gICAgc3RhcnRTYW1wbGluZzogZnVuY3Rpb24o
c2FtcGxpbmdUaW1lT2Zmc2V0KQotICAgIHsKLSAgICAgICAgdGhpcy5leHBlcmltZW50cy5mb3JF
YWNoKGZ1bmN0aW9uKGV4cGVyaW1lbnQpIHsKLSAgICAgICAgICAgIGV4cGVyaW1lbnQuc3RhcnRT
YW1wbGluZygpOwotICAgICAgICB9KTsKLSAgICAgICAgICAgIAotICAgICAgICB0aGlzLnNhbXBs
aW5nVGltZU9mZnNldCA9IHNhbXBsaW5nVGltZU9mZnNldCAvIDEwMDA7CisgICAgcmVjb3JkOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgLy8gQXNzdW1lIHRoYXQgYXJndW1lbnRzLmxlbmd0aCA9PSB0
aGlzLnNhbXBsZXMubGVuZ3RoCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0aGlzLnNhbXBsZXNbaV1bdGhpcy5zYW1wbGVD
b3VudF0gPSBhcmd1bWVudHNbaV07CisgICAgICAgIH0KKyAgICAgICAgKyt0aGlzLnNhbXBsZUNv
dW50OwogICAgIH0sCi0gICAgCi0gICAgc2FtcGxlOiBmdW5jdGlvbih0aW1lT2Zmc2V0LCB2YWx1
ZXMpCi0gICAgewotICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8IHRoaXMuZXhwZXJpbWVudHMu
bGVuZ3RoKQotICAgICAgICAgICAgdGhyb3cgIk5vdCBlbm91Z2ggc2FtcGxlIHBvaW50cyI7Ci0K
LSAgICAgICAgdGhpcy5leHBlcmltZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV4cGVyaW1lbnQsIGlu
ZGV4KSB7Ci0gICAgICAgICAgICBleHBlcmltZW50LnNhbXBsZSh2YWx1ZXNbaW5kZXhdKTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICB0aGlzLnNhbXBsZXMucHVz
aCh7IHRpbWVPZmZzZXQ6IHRpbWVPZmZzZXQgLyAxMDAwLCB2YWx1ZXM6IHZhbHVlcyB9KTsKKwor
ICAgIG1hcms6IGZ1bmN0aW9uKGNvbW1lbnQsIGRhdGEpIHsKKyAgICAgICAgZGF0YSA9IGRhdGEg
fHwge307CisgICAgICAgIC8vIFRoZSBtYXJrIGV4aXN0cyBhZnRlciB0aGUgbGFzdCByZWNvcmRl
ZCBzYW1wbGUKKyAgICAgICAgZGF0YS5pbmRleCA9IHRoaXMuc2FtcGxlQ291bnQ7CisKKyAgICAg
ICAgdGhpcy5tYXJrc1tjb21tZW50XSA9IGRhdGE7CiAgICAgfSwKLSAgICAKLSAgICB0b0pTT046
IGZ1bmN0aW9uKHN0YXRpc3RpY3MsIGdyYXBoKQorCisgICAgcHJvY2VzczogZnVuY3Rpb24ob3B0
aW9ucykKICAgICB7CiAgICAgICAgIHZhciByZXN1bHRzID0ge307Ci0gICAgICAgICAKLSAgICAg
ICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2NvcmVdID0gdGhpcy5leHBlcmltZW50c1swXS5zY29y
ZShFeHBlcmltZW50LmRlZmF1bHRzLkNPTkNFUk4pOwotICAgICAgICAgICAKLSAgICAgICAgaWYg
KHN0YXRpc3RpY3MpIHsKLSAgICAgICAgICAgIHRoaXMuZXhwZXJpbWVudHMuZm9yRWFjaChmdW5j
dGlvbihleHBlcmltZW50LCBpbmRleCkgewotICAgICAgICAgICAgICAgIHZhciBqc29uRXhwZXJp
bWVudCA9ICFpbmRleCA/IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21wbGV4aXR5IDogU3Ry
aW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZTsKLSAgICAgICAgICAgICAgICByZXN1bHRz
W2pzb25FeHBlcmltZW50XSA9IHt9OwotICAgICAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVy
aW1lbnRdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0gPSBleHBlcmltZW50Lm1l
YW4oKTsKLSAgICAgICAgICAgICAgICByZXN1bHRzW2pzb25FeHBlcmltZW50XVtTdHJpbmdzLmpz
b24ubWVhc3VyZW1lbnRzLmNvbmNlcm5dID0gZXhwZXJpbWVudC5jb25jZXJuKEV4cGVyaW1lbnQu
ZGVmYXVsdHMuQ09OQ0VSTik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c1tqc29uRXhwZXJpbWVu
dF1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5zdGRldl0gPSBleHBlcmltZW50LnN0YW5kYXJk
RGV2aWF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c1tqc29uRXhwZXJpbWVudF1bU3Ry
aW5ncy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50XSA9IGV4cGVyaW1lbnQucGVyY2VudGFnZSgp
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGdyYXBo
KSB7Ci0gICAgICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNvbi5zYW1wbGVzXSA9IHt9OwotICAg
ICAgICAgICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2FtcGxlc11bU3RyaW5ncy5qc29uLmdyYXBo
LnBvaW50c10gPSB0aGlzLnNhbXBsZXM7Ci0gICAgICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNv
bi5zYW1wbGVzXVtTdHJpbmdzLmpzb24uZ3JhcGguc2FtcGxpbmdUaW1lT2Zmc2V0XSA9IHRoaXMu
c2FtcGxpbmdUaW1lT2Zmc2V0OwotICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIGlmIChv
cHRpb25zWyJhZGp1c3RtZW50Il0gPT0gImFkYXB0aXZlIikKKyAgICAgICAgICAgIHJlc3VsdHNb
U3RyaW5ncy5qc29uLnRhcmdldEZQU10gPSArb3B0aW9uc1siZnJhbWUtcmF0ZSJdOworCisgICAg
ICAgIC8vIFJlbW92ZSB1bnVzZWQgY2FwYWNpdHkKKyAgICAgICAgdGhpcy5zYW1wbGVzID0gdGhp
cy5zYW1wbGVzLm1hcChmdW5jdGlvbihhcnJheSkgeworICAgICAgICAgICAgcmV0dXJuIGFycmF5
LnNsaWNlKDAsIHRoaXMuc2FtcGxlQ291bnQpOworICAgICAgICB9LCB0aGlzKTsKKworICAgICAg
ICB0aGlzLl9wcm9jZXNzb3IucHJvY2Vzc1NhbXBsZXMocmVzdWx0cyk7CisKICAgICAgICAgcmV0
dXJuIHJlc3VsdHM7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Jlc291cmNlcy9zdHJpbmdzLmpzCmluZGV4IDgxZjQ2YmUyOTE4MTVjMzhkNmM0YTY2NDU3NDY0
OTFhYzk4ZjNmMmYuLmM1M2Q2ZTE0NmQwNmE0MDdlOWM2NDdlMTI5NTFkNzg1MGZmM2Q2NWQgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanMK
QEAgLTI2LDYgKzI2LDkgQEAgdmFyIFN0cmluZ3MgPSB7CiAgICAgICAgIHNjb3JlOiAic2NvcmUi
LAogICAgICAgICBzYW1wbGVzOiAic2FtcGxlcyIsCiAKKyAgICAgICAgdGFyZ2V0RlBTOiAidGFy
Z2V0RlBTIiwKKyAgICAgICAgc2FtcGxpbmdUaW1lT2Zmc2V0OiAic2FtcGxpbmdUaW1lT2Zmc2V0
IiwKKwogICAgICAgICBleHBlcmltZW50czogewogICAgICAgICAgICAgY29tcGxleGl0eTogImNv
bXBsZXhpdHkiLAogICAgICAgICAgICAgZnJhbWVSYXRlOiAiZnJhbWVSYXRlIgpAQCAtNDIsMTEg
KzQ1LDYgQEAgdmFyIFN0cmluZ3MgPSB7CiAgICAgICAgICAgICBpdGVyYXRpb25zOiAiaXRlcmF0
aW9uc1Jlc3VsdHMiLAogICAgICAgICAgICAgc3VpdGVzOiAic3VpdGVzUmVzdWx0cyIsCiAgICAg
ICAgICAgICB0ZXN0czogInRlc3RzUmVzdWx0cyIKLSAgICAgICAgfSwKLQotICAgICAgICBncmFw
aDogewotICAgICAgICAgICAgcG9pbnRzOiAicG9pbnRzIiwKLSAgICAgICAgICAgIHNhbXBsaW5n
VGltZU9mZnNldDogInNhbXBsaW5nVGltZU9mZnNldCIKICAgICAgICAgfQogICAgIH0KIH07CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFy
dGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1w
YXJ0aWNsZXMuanMKaW5kZXggNTBlNjVjYzE4MDY1NjgxZmQwZTFlMGZmOWJkM2IzMWRiNWM5MWU1
Ni4uZTU2ZmZkNTNmMWYzOWM2OGQ5ODFkMTVkNjA1ODQxMzlkYmYyZWJkNCAxMDA2NDQKLS0tIGEv
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNv
dXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xl
cy5qcwpAQCAtMTEzLDUgKzExMywxMCBAQCBCb3VuY2luZ1BhcnRpY2xlc1N0YWdlID0gVXRpbGl0
aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAogCiAgICAgICAgIHRoaXMucGFydGljbGVzLnNwbGlj
ZSgtY291bnQsIGNvdW50KTsKICAgICAgICAgcmV0dXJuIHRoaXMucGFydGljbGVzLmxlbmd0aDsK
KyAgICB9LAorCisgICAgY29tcGxleGl0eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMucGFydGljbGVzLmxlbmd0aDsKICAgICB9CiB9KTsKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2NhbnZhcy1lbGVjdHJvbnMuanMKaW5kZXggZjE1ODA0ZjM4ZTlkN2I5N2Y0NTAzNDkwZWEwNmY0
NjMwZTdjZjJlYy4uZjdiMGE2NTA3YWUzODViZWE1ZTU0MzAyNzNhMWZjZmE4ZTc4ODA3YiAxMDA2
NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2NhbnZhcy1lbGVjdHJvbnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanMKQEAgLTk1LDYgKzk1LDExIEBA
IENhbnZhc0VsZWN0cm9uc1N0YWdlID0gVXRpbGl0aWVzLmNyZWF0ZVN1YmNsYXNzKFN0YWdlLAog
ICAgICAgICB0aGlzLl9lbGVjdHJvbnMuZm9yRWFjaChmdW5jdGlvbihlbGVjdHJvbikgewogICAg
ICAgICAgICAgZWxlY3Ryb24uYW5pbWF0ZSh0aW1lRGVsdGEpOwogICAgICAgICB9KTsKKyAgICB9
LAorCisgICAgY29tcGxleGl0eTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZWN0cm9ucy5sZW5ndGg7CiAgICAgfQogfSk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFz
LXN0YXJzLmpzCmluZGV4IGU4NTM5NzYxOTJkZjgxNDBlNTliYzc4NTYxOTAyZTU2M2U3M2IxNDUu
LmQ4ODZlZWM5YmUxZGVmODM1ZTc3YWEwM2Y5Y2VkZTU0YjcyNjY4MzAgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3Rh
cnMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3Vy
Y2VzL2NhbnZhcy1zdGFycy5qcwpAQCAtOTEsNiArOTEsMTEgQEAgQ2FudmFzU3RhcnNTdGFnZSA9
IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKICAgICAgICAgdGhpcy5fb2JqZWN0cy5m
b3JFYWNoKGZ1bmN0aW9uKG9iamVjdCkgewogICAgICAgICAgICAgb2JqZWN0LmFuaW1hdGUodGlt
ZURlbHRhKTsKICAgICAgICAgfSk7CisgICAgfSwKKworICAgIGNvbXBsZXhpdHk6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RzLmxlbmd0aDsKICAgICB9CiB9
KTsKIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9tYWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy9tYWluLmpzCmluZGV4IDc0ZjY0ZWNjMzhlMTM3M2YwODAwZTYyMzFiNjllYmYxN2NlZWQ1NDIu
Ljk4MzdjNTc1NDY5MzFjMzkxMGMwMWRiOTIzMGQ1ZGRjNGFhZGM4ZGQgMTAwNjQ0Ci0tLSBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKQEAgLTE4
MCwxMiArMTgwLDEwIEBAIFN0YWdlLnByb3RvdHlwZSA9CiAKIGZ1bmN0aW9uIEFuaW1hdG9yKCkK
IHsKLSAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKLSAgICB0aGlzLl9kcm9wRnJhbWVDb3VudCA9
IDE7Ci0gICAgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQgPSAzOworICAgIHRoaXMuX2ludGVydmFs
RnJhbWVDb3VudCA9IDA7CisgICAgdGhpcy5fbnVtYmVyT2ZGcmFtZXNUb01lYXN1cmVQZXJJbnRl
cnZhbCA9IDM7CiAgICAgdGhpcy5fcmVmZXJlbmNlVGltZSA9IDA7CiAgICAgdGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQgPSAwOwotICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBLYWxtYW5Fc3RpbWF0
b3IoNjApOwogfQogCiBBbmltYXRvci5wcm90b3R5cGUgPQpAQCAtMTkzLDcgKzE5MSwxMiBAQCBB
bmltYXRvci5wcm90b3R5cGUgPQogICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGJlbmNobWFyaykK
ICAgICB7CiAgICAgICAgIHRoaXMuX2JlbmNobWFyayA9IGJlbmNobWFyazsKLSAgICAgICAgdGhp
cy5fZXN0aW1hdGVGcmFtZVJhdGUgPSBiZW5jaG1hcmsub3B0aW9uc1siZXN0aW1hdGVkLWZyYW1l
LXJhdGUiXTsKKworICAgICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5v
bi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgorICAgICAgICBpZiAoYmVuY2htYXJrLm9wdGlvbnNb
ImVzdGltYXRlZC1mcmFtZS1yYXRlIl0pCisgICAgICAgICAgICB0aGlzLl9lc3RpbWF0b3IgPSBu
ZXcgS2FsbWFuRXN0aW1hdG9yKDYwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5f
ZXN0aW1hdG9yID0gbmV3IElkZW50aXR5RXN0aW1hdG9yOwogICAgIH0sCiAKICAgICBnZXQgYmVu
Y2htYXJrKCkKQEAgLTIwMSw1NSArMjA0LDU1IEBAIEFuaW1hdG9yLnByb3RvdHlwZSA9CiAgICAg
ICAgIHJldHVybiB0aGlzLl9iZW5jaG1hcms7CiAgICAgfSwKIAotICAgIHRpbWVEZWx0YTogZnVu
Y3Rpb24oKQorICAgIF9pbnRlcnZhbFRpbWVEZWx0YTogZnVuY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fc3RhcnRUaW1lT2Zmc2V0
OwogICAgIH0sCiAKICAgICBfc2hvdWxkUmVxdWVzdEFub3RoZXJGcmFtZTogZnVuY3Rpb24oKQog
ICAgIHsKKyAgICAgICAgLy8gQ2FkZW5jZSBpcyBudW1iZXIgb2YgZnJhbWVzIHRvIG1lYXN1cmUs
IHRoZW4gb25lIG1vcmUgZnJhbWUgdG8gYWRqdXN0IHRoZSBzY2VuZSwgYW5kIGRyb3AKICAgICAg
ICAgdmFyIGN1cnJlbnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7Ci0gICAgICAgIAorCiAgICAg
ICAgIGlmICghdGhpcy5fcmVmZXJlbmNlVGltZSkKICAgICAgICAgICAgIHRoaXMuX3JlZmVyZW5j
ZVRpbWUgPSBjdXJyZW50VGltZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fY3Vy
cmVudFRpbWVPZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3JlZmVyZW5jZVRpbWU7CiAKLSAg
ICAgICAgaWYgKCF0aGlzLl9mcmFtZUNvdW50KQotICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1l
T2Zmc2V0ID0gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQ7CisgICAgICAgIHRoaXMuX2N1cnJlbnRU
aW1lT2Zmc2V0ID0gY3VycmVudFRpbWUgLSB0aGlzLl9yZWZlcmVuY2VUaW1lOwogCi0gICAgICAg
ICsrdGhpcy5fZnJhbWVDb3VudDsKKyAgICAgICAgaWYgKCF0aGlzLl9pbnRlcnZhbEZyYW1lQ291
bnQpCisgICAgICAgICAgICB0aGlzLl9zdGFydFRpbWVPZmZzZXQgPSB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldDsKIAotICAgICAgICAvLyBTdGFydCBtZWFzdXJpbmcgYWZ0ZXIgZHJvcHBpbmcgX2Ry
b3BGcmFtZUNvdW50IGZyYW1lcy4KLSAgICAgICAgaWYgKHRoaXMuX2ZyYW1lQ291bnQgPT0gdGhp
cy5fZHJvcEZyYW1lQ291bnQpCi0gICAgICAgICAgICB0aGlzLl9tZWFzdXJlVGltZU9mZnNldCA9
IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0OworICAgICAgICAvLyBTdGFydCB0aGUgd29yayBmb3Ig
dGhlIG5leHQgZnJhbWUuCisgICAgICAgICsrdGhpcy5faW50ZXJ2YWxGcmFtZUNvdW50OwogCiAg
ICAgICAgIC8vIERyb3AgX2Ryb3BGcmFtZUNvdW50IGZyYW1lcyBhbmQgbWVhc3VyZSB0aGUgYXZl
cmFnZSBvZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzLgotICAgICAgICBpZiAodGhpcy5fZnJh
bWVDb3VudCA8IHRoaXMuX2Ryb3BGcmFtZUNvdW50ICsgdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQp
CisgICAgICAgIGlmICh0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQgPD0gdGhpcy5fbnVtYmVyT2ZG
cmFtZXNUb01lYXN1cmVQZXJJbnRlcnZhbCkgeworICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJr
LnJlY29yZCh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgLTEsIC0xKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CiAKLSAgICAgICAgLy8gR2V0IHRoZSBhdmVyYWdlIEZQUyBv
ZiBfbWVhc3VyZUZyYW1lQ291bnQgZnJhbWVzIG92ZXIgbWVhc3VyZVRpbWVEZWx0YS4KLSAgICAg
ICAgdmFyIG1lYXN1cmVUaW1lRGVsdGEgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNldCAtIHRoaXMu
X21lYXN1cmVUaW1lT2Zmc2V0OwotICAgICAgICB2YXIgY3VycmVudEZyYW1lUmF0ZSA9IE1hdGgu
Zmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8gdGhpcy5fbWVhc3VyZUZyYW1lQ291bnQp
KTsKLQotICAgICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVj
dHVhdGluZyBmcmFtZSByYXRlLgotICAgICAgICBpZiAodGhpcy5fZXN0aW1hdGVGcmFtZVJhdGUp
Ci0gICAgICAgICAgICBjdXJyZW50RnJhbWVSYXRlID0gdGhpcy5fZXN0aW1hdG9yLmVzdGltYXRl
KGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9t
ZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMgb3ZlciBpbnRlcnZhbFRpbWVEZWx0YS4KKyAgICAgICAg
dmFyIGludGVydmFsVGltZURlbHRhID0gdGhpcy5faW50ZXJ2YWxUaW1lRGVsdGEoKTsKKyAgICAg
ICAgdmFyIGludGVydmFsRnJhbWVSYXRlID0gMTAwMCAvIChpbnRlcnZhbFRpbWVEZWx0YSAvIHRo
aXMuX251bWJlck9mRnJhbWVzVG9NZWFzdXJlUGVySW50ZXJ2YWwpOworICAgICAgICB2YXIgZXN0
aW1hdGVkSW50ZXJ2YWxGcmFtZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUoaW50ZXJ2
YWxGcmFtZVJhdGUpOworICAgICAgICAvLyBSZWNvcmQgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGZy
YW1lIHdlIGp1c3QgcmVuZGVyZWQuIFRoZSBuZXh0IGZyYW1lJ3MgdGltZSByZXNwcmVzZW50cyB0
aGUgYWRqdXN0ZWQKKyAgICAgICAgLy8gY29tcGxleGl0eQorICAgICAgICB0aGlzLl9iZW5jaG1h
cmsucmVjb3JkKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCBlc3RpbWF0ZWRJbnRlcnZhbEZyYW1l
UmF0ZSwgaW50ZXJ2YWxGcmFtZVJhdGUpOwogCiAgICAgICAgIC8vIEFkanVzdCB0aGUgdGVzdCB0
byByZWFjaCB0aGUgZGVzaXJlZCBGUFMuCi0gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9iZW5j
aG1hcmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnRpbWVEZWx0YSgpLCBj
dXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgdmFyIHNob3VsZENvbnRpbnVlUnVubmluZyA9IHRo
aXMuX2JlbmNobWFyay51cGRhdGUodGhpcy5fY3VycmVudFRpbWVPZmZzZXQsIGludGVydmFsVGlt
ZURlbHRhLCBlc3RpbWF0ZWRJbnRlcnZhbEZyYW1lUmF0ZSk7CiAKICAgICAgICAgLy8gU3RhcnQg
dGhlIG5leHQgZHJvcC9tZWFzdXJlIGN5Y2xlLgotICAgICAgICB0aGlzLl9mcmFtZUNvdW50ID0g
MDsKKyAgICAgICAgdGhpcy5faW50ZXJ2YWxGcmFtZUNvdW50ID0gMDsKIAotICAgICAgICAvLyBJ
ZiByZXN1bHQgPT0gMCwgbm8gbW9yZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB3aWxsIGJlIGlu
dm9rZWQuCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIC8vIElmIHJlc3VsdCBpcyBm
YWxzZSwgbm8gbW9yZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKSB3aWxsIGJlIGludm9rZWQuCisg
ICAgICAgIHJldHVybiBzaG91bGRDb250aW51ZVJ1bm5pbmc7CiAgICAgfSwKIAogICAgIGFuaW1h
dGVMb29wOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2hvdWxkUmVxdWVz
dEFub3RoZXJGcmFtZSgpKSB7Ci0gICAgICAgICAgICB0aGlzLl9iZW5jaG1hcmsuc3RhZ2UuYW5p
bWF0ZSh0aGlzLnRpbWVEZWx0YSgpKTsKKyAgICAgICAgICAgIHRoaXMuX2JlbmNobWFyay5zdGFn
ZS5hbmltYXRlKHRoaXMuX2ludGVydmFsVGltZURlbHRhKCkpOwogICAgICAgICAgICAgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lKHRoaXMuYW5pbWF0ZUxvb3AuYmluZCh0aGlzKSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yNjcsNyArMjcwLDcgQEAgZnVuY3Rpb24gQmVuY2htYXJrKHN0YWdlLCBvcHRp
b25zKQogICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOwogICAgIHRoaXMuX2lzU2FtcGxp
bmcgPSBmYWxzZTsKICAgICB0aGlzLl9jb250cm9sbGVyID0gbmV3IFBJRENvbnRyb2xsZXIodGhp
cy5fb3B0aW9uc1siZnJhbWUtcmF0ZSJdKTsKLSAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNhbXBs
ZXIoMik7CisgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDQsIDYwICogdGhpcy5fb3B0
aW9uc1sidGVzdC1pbnRlcnZhbCJdLCB0aGlzKTsKICAgICB0aGlzLl9zdGF0ZSA9IG5ldyBCZW5j
aG1hcmtTdGF0ZSh0aGlzLl9vcHRpb25zWyJ0ZXN0LWludGVydmFsIl0gKiAxMDAwKTsKIH0KIApA
QCAtMjk1LDcgKzI5OCw3IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgIH0sCiAKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRo
ZSB0ZXN0LgotICAgIHVwZGF0ZTogZnVuY3Rpb24oY3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0
YSwgY3VycmVudEZyYW1lUmF0ZSkKKyAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zm
c2V0LCBpbnRlcnZhbFRpbWVEZWx0YSwgZXN0aW1hdGVkSW50ZXJ2YWxGcmFtZVJhdGUpCiAgICAg
ewogICAgICAgICB0aGlzLl9zdGF0ZS51cGRhdGUoY3VycmVudFRpbWVPZmZzZXQpOwogCkBAIC0z
MDYsNyArMzA5LDkgQEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoc3RhZ2UgPT0gQmVuY2htYXJrU3RhdGUuc3RhZ2VzLlNBTVBMSU5HICYmICF0aGlzLl9p
c1NhbXBsaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLl9zYW1wbGVyLnN0YXJ0U2FtcGxpbmcodGhp
cy5fc3RhdGUuc2FtcGxpbmdUaW1lT2Zmc2V0KCkpOworICAgICAgICAgICAgdGhpcy5fc2FtcGxl
ci5tYXJrKFN0cmluZ3MuanNvbi5zYW1wbGluZ1RpbWVPZmZzZXQsIHsKKyAgICAgICAgICAgICAg
ICB0aW1lOiB0aGlzLl9zdGF0ZS5zYW1wbGluZ1RpbWVPZmZzZXQoKSAvIDEwMDAKKyAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgdGhpcy5faXNTYW1wbGluZyA9IHRydWU7CiAgICAgICAgIH0K
IApAQCAtMzIwLDI3ICszMjUsMjcgQEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIGVs
c2UgaWYgKCEodGhpcy5faXNTYW1wbGluZyAmJiB0aGlzLl9vcHRpb25zWyJhZGp1c3RtZW50Il0g
PT0gImZpeGVkLWFmdGVyLXdhcm11cCIpKSB7CiAgICAgICAgICAgICAvLyBUaGUgcmVsYXRpb25z
aGlwIGJldHdlZW4gZnJhbWVSYXRlIGFuZCB0ZXN0IGNvbXBsZXhpdHkgaXMgaW52ZXJzZS1wcm9w
b3J0aW9uYWwgc28gd2UKICAgICAgICAgICAgIC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBv
ZiBQSURDb250cm9sbGVyLnR1bmUoKSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRl
c3QuCi0gICAgICAgICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1cnJl
bnRUaW1lT2Zmc2V0LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpOworICAgICAgICAgICAg
dHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50VGltZU9mZnNldCwgaW50
ZXJ2YWxUaW1lRGVsdGEsIGVzdGltYXRlZEludGVydmFsRnJhbWVSYXRlKTsKICAgICAgICAgICAg
IHR1bmVWYWx1ZSA9IHR1bmVWYWx1ZSA+IDAgPyBNYXRoLmZsb29yKHR1bmVWYWx1ZSkgOiBNYXRo
LmNlaWwodHVuZVZhbHVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBjdXJyZW50Q29tcGxl
eGl0eSA9IHRoaXMuX3N0YWdlLnR1bmUodHVuZVZhbHVlKTsKLSAgICAgICAgdGhpcy5yZWNvcmQo
Y3VycmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIHJlY29yZDogZnVuY3Rpb24oY3Vy
cmVudFRpbWVPZmZzZXQsIGN1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlKQotICAg
IHsKLSAgICAgICAgdGhpcy5fc2FtcGxlci5zYW1wbGUoY3VycmVudFRpbWVPZmZzZXQsIFtjdXJy
ZW50Q29tcGxleGl0eSwgY3VycmVudEZyYW1lUmF0ZV0pOworICAgICAgICB0aGlzLl9zdGFnZS50
dW5lKHR1bmVWYWx1ZSk7CiAKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZWNvcmRUaW1lT2Zm
c2V0ID09ICJ1bmRlZmluZWQiKQogICAgICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9
IGN1cnJlbnRUaW1lT2Zmc2V0OwogCiAgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuX3N0YXRlLmN1
cnJlbnRTdGFnZSgpOwogICAgICAgICBpZiAoc3RhZ2UgIT0gQmVuY2htYXJrU3RhdGUuc3RhZ2Vz
LkZJTklTSEVEICYmIGN1cnJlbnRUaW1lT2Zmc2V0IDwgdGhpcy5fcmVjb3JkVGltZU9mZnNldCAr
IHRoaXMuX3JlY29yZEludGVydmFsKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAgICAgdGhpcy5fcmVjb3JkVGltZU9mZnNldCA9IGN1cnJlbnRU
aW1lT2Zmc2V0OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgcmVjb3JkOiBm
dW5jdGlvbihjdXJyZW50VGltZU9mZnNldCwgZXN0aW1hdGVkRnJhbWVSYXRlLCBpbnRlcnZhbEZy
YW1lUmF0ZSkKKyAgICB7CisgICAgICAgIC8vIElmIHRoZSBmcmFtZSByYXRlIGlzIC0xIGl0IG1l
YW5zIHdlIGFyZSBzdGlsbCByZWNvcmRpbmcgZm9yIHRoaXMgc2FtcGxlCisgICAgICAgIHRoaXMu
X3NhbXBsZXIucmVjb3JkKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnN0YWdlLmNvbXBsZXhpdHko
KSwgZXN0aW1hdGVkRnJhbWVSYXRlLCBpbnRlcnZhbEZyYW1lUmF0ZSk7CiAgICAgfSwKIAogICAg
IHJ1bjogZnVuY3Rpb24oKQpAQCAtMzU3LDUgKzM2Miw1NyBAQCBCZW5jaG1hcmsucHJvdG90eXBl
ID0KIAogICAgICAgICByZXNvbHZlV2hlbkZpbmlzaGVkKCk7CiAgICAgICAgIHJldHVybiBwcm9t
aXNlOworICAgIH0sCisKKyAgICBwcm9jZXNzU2FtcGxlczogZnVuY3Rpb24ocmVzdWx0cykKKyAg
ICB7CisgICAgICAgIHZhciBjb21wbGV4aXR5ID0gbmV3IEV4cGVyaW1lbnQ7CisgICAgICAgIHZh
ciBzbW9vdGhlZEZQUyA9IG5ldyBFeHBlcmltZW50OworICAgICAgICB2YXIgc2FtcGxpbmdJbmRl
eCA9IDA7CisKKyAgICAgICAgdmFyIHNhbXBsaW5nTWFyayA9IHRoaXMuX3NhbXBsZXIubWFya3Nb
U3RyaW5ncy5qc29uLnNhbXBsaW5nVGltZU9mZnNldF07CisgICAgICAgIGlmIChzYW1wbGluZ01h
cmspIHsKKyAgICAgICAgICAgIHNhbXBsaW5nSW5kZXggPSBzYW1wbGluZ01hcmsuaW5kZXg7Cisg
ICAgICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNvbi5zYW1wbGluZ1RpbWVPZmZzZXRdID0gc2Ft
cGxpbmdNYXJrLnRpbWU7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNv
bi5zYW1wbGVzXSA9IHRoaXMuX3NhbXBsZXIuc2FtcGxlc1swXS5tYXAoZnVuY3Rpb24oZCwgaSkg
eworICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHsKKyAgICAgICAgICAgICAgICAvLyB0aW1lIG9m
ZnNldHMgcmVwcmVzZW50ZWQgYXMgc2Vjb25kcworICAgICAgICAgICAgICAgIHRpbWU6IGQvMTAw
MCwKKyAgICAgICAgICAgICAgICBjb21wbGV4aXR5OiB0aGlzLl9zYW1wbGVyLnNhbXBsZXNbMV1b
aV0KKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIHRpbWUgb2Zmc2V0cyByZXByZXNl
bnRlZCBhcyBGUFMKKyAgICAgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICAgICAgcmVz
dWx0LmZwcyA9IDYwOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdC5m
cHMgPSAxMDAwIC8gKGQgLSB0aGlzLl9zYW1wbGVyLnNhbXBsZXNbMF1baSAtIDFdKTsKKworICAg
ICAgICAgICAgdmFyIHNtb290aGVkRlBTcmVzdWx0ID0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzJd
W2ldOworICAgICAgICAgICAgaWYgKHNtb290aGVkRlBTcmVzdWx0ICE9IC0xKSB7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LnNtb290aGVkRlBTID0gc21vb3RoZWRGUFNyZXN1bHQ7CisgICAgICAg
ICAgICAgICAgcmVzdWx0LmludGVydmFsRlBTID0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzNdW2ld
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaSA+PSBzYW1wbGluZ0luZGV4KSB7
CisgICAgICAgICAgICAgICAgY29tcGxleGl0eS5zYW1wbGUocmVzdWx0LmNvbXBsZXhpdHkpOwor
ICAgICAgICAgICAgICAgIGlmIChzbW9vdGhlZEZQU3Jlc3VsdCAhPSAtMSkgeworICAgICAgICAg
ICAgICAgICAgICBzbW9vdGhlZEZQUy5zYW1wbGUoc21vb3RoZWRGUFNyZXN1bHQpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfSwgdGhpcyk7CisKKyAgICAgICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2NvcmVd
ID0gY29tcGxleGl0eS5zY29yZShFeHBlcmltZW50LmRlZmF1bHRzLkNPTkNFUk4pOworICAgICAg
ICBbY29tcGxleGl0eSwgc21vb3RoZWRGUFNdLmZvckVhY2goZnVuY3Rpb24oZXhwZXJpbWVudCwg
aW5kZXgpIHsKKyAgICAgICAgICAgIHZhciBqc29uRXhwZXJpbWVudCA9ICFpbmRleCA/IFN0cmlu
Z3MuanNvbi5leHBlcmltZW50cy5jb21wbGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRz
LmZyYW1lUmF0ZTsKKyAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVyaW1lbnRdID0ge307Cisg
ICAgICAgICAgICByZXN1bHRzW2pzb25FeHBlcmltZW50XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1l
bnRzLmF2ZXJhZ2VdID0gZXhwZXJpbWVudC5tZWFuKCk7CisgICAgICAgICAgICByZXN1bHRzW2pz
b25FeHBlcmltZW50XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmNvbmNlcm5dID0gZXhwZXJp
bWVudC5jb25jZXJuKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTik7CisgICAgICAgICAgICBy
ZXN1bHRzW2pzb25FeHBlcmltZW50XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLnN0ZGV2XSA9
IGV4cGVyaW1lbnQuc3RhbmRhcmREZXZpYXRpb24oKTsKKyAgICAgICAgICAgIHJlc3VsdHNbanNv
bkV4cGVyaW1lbnRdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0gPSBleHBlcmlt
ZW50LnBlcmNlbnRhZ2UoKTsKKyAgICAgICAgfSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwppbmRleCAxNDk4
MmRkMTZmMTA3ZWQxNzE2MzAxNWU0ODljMWI0YTRlZGJiNTkwLi42NzdhMjBiZTI2MzQ5Njk1ZjQy
NzRhMWYwNGIyNWQxOTA2NmZiYWQwIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCkBAIC0zMCw3ICszMCw3IEBAIHZhciBNYXRy
aXggPQogICAgICAgICAgICAgb3V0ICs9IEFbaV07CiAgICAgICAgICAgICBpZiAoaSA8IG4gKiBt
IC0gMSkKICAgICAgICAgICAgICAgICBvdXQgKz0gIiwgIjsKLSAgICAgICAgfSAgICAgICAKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gb3V0ICsgIl0iOwogICAgIH0sCiAKQEAgLTE5Myw3ICsx
OTMsNyBAQCBmdW5jdGlvbiBQSURDb250cm9sbGVyKHlzcCkKIAogICAgIHRoaXMuX0twID0gMDsK
ICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLldBUk1JTkc7Ci0gICAgCisK
ICAgICB0aGlzLl9lb2xkID0gMDsKICAgICB0aGlzLl9JID0gMDsKIH0KQEAgLTIwOCwxMiArMjA4
LDEyIEBAIFBJRENvbnRyb2xsZXIueVBvc2l0aW9ucyA9IHsKIC8vIFRoZSBaaWVnbGVy4oCTTmlj
aG9scyBtZXRob2QgZm9yIGlzIHVzZWQgdHVuaW5nIHRoZSBQSUQgY29udHJvbGxlci4gVGhlIHdv
cmtmbG93IG9mCiAvLyB0aGUgdHVuaW5nIGlzIHNwbGl0IGludG8gZm91ciBzdGFnZXMuIFRoZSBm
aXJzdCB0d28gc3RhZ2VzIGRldGVybWluZSB0aGUgdmFsdWVzCiAvLyBvZiB0aGUgUElEIGNvbnRy
b2xsZXIgZ2FpbnMuIER1cmluZyB0aGVzZSB0d28gc3RhZ2VzIHdlIHJldHVybiB0aGUgcHJvcG9y
dGlvbmFsCi0vLyB0ZXJtIG9ubHkuIFRoZSB0aGlyZCBzdGFnZSBpcyB1c2VkIHRvIGRldGVybWlu
ZSB0aGUgbWluLW1heCB2YWx1ZXMgb2YgdGhlIAorLy8gdGVybSBvbmx5LiBUaGUgdGhpcmQgc3Rh
Z2UgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG1pbi1tYXggdmFsdWVzIG9mIHRoZQogLy8gc2F0
dXJhdGlvbiBhY3R1YXRvci4gSW4gdGhlIGxhc3Qgc3RhZ2UgYmFjay1jYWxjdWxhdGlvbiBhbmQg
dHJhY2tpbmcgYXJlIGFwcGxpZWQKIC8vIHRvIGF2b2lkIGludGVncmF0b3Igd2luZHVwLiBEdXJp
bmcgdGhlIGxhc3QgdHdvIHN0YWdlcywgd2UgcmV0dXJuIGEgUElEIGNvbnRyb2wKIC8vIHZhbHVl
LgogUElEQ29udHJvbGxlci5zdGFnZXMgPSB7Ci0gICAgV0FSTUlORzogMCwgICAgICAgICAvLyBJ
bmNyZWFzZSB0aGUgdmFsdWUgb2YgdGhlIEtwIHVudGlsIHRoZSBzeXN0ZW0gb3V0cHV0IHJlYWNo
ZXMgeXNwLiAKKyAgICBXQVJNSU5HOiAwLCAgICAgICAgIC8vIEluY3JlYXNlIHRoZSB2YWx1ZSBv
ZiB0aGUgS3AgdW50aWwgdGhlIHN5c3RlbSBvdXRwdXQgcmVhY2hlcyB5c3AuCiAgICAgT1ZFUlNI
T09UOiAxLCAgICAgICAvLyBNZWFzdXJlIHRoZSBvc2NpbGxhdGlvbiBwZXJpb2QgYW5kIHRoZSBv
dmVyc2hvb3QgdmFsdWUKICAgICBVTkRFUlNIT09UOiAyLCAgICAgIC8vIFJldHVybiBQSUQgdmFs
dWUgYW5kIG1lYXN1cmUgdGhlIHVuZGVyc2hvb3QgdmFsdWUKICAgICBTQVRVUkFURTogMyAgICAg
ICAgIC8vIFJldHVybiBQSUQgdmFsdWUgYW5kIGFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRy
YWNraW5nLgpAQCAtMjM3LDcgKzIzNyw3IEBAIFBJRENvbnRyb2xsZXIucHJvdG90eXBlID0KICAg
ICAvLyBwcm9wb3J0aW9uYWwgZ2FpbiB2ZXJ5IHNtYWxsIGJ1dCBhY2hpZXZlcyB0aGUgZGVzaXJl
ZCBwcm9ncmVzcy4gQnV0IGlmIHkgZG9lcwogICAgIC8vIG5vdCBjaGFuZ2Ugc2lnbmlmaWNhbnRs
eSBhZnRlciBhZGRpbmcgZmV3IGl0ZW1zLCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBtdWNoCiAgICAg
Ly8gYmlnZ2VyIGdhaW4uIFNvIHdlIG5lZWQgdG8gbW92ZSBvdmVyIGEgY3ViaWMgY3VydmUgd2hp
Y2ggaW5jcmVhc2VzIHZlcnkKLSAgICAvLyBzbG93bHkgd2l0aCBzbWFsbCB0IHZhbHVlcyBidXQg
bW92ZXMgdmVyeSBmYXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVzLiAKKyAgICAvLyBzbG93bHkgd2l0
aCBzbWFsbCB0IHZhbHVlcyBidXQgbW92ZXMgdmVyeSBmYXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVz
LgogICAgIC8vIFRoZSBiYXNpYyBmb3JtdWxhIGlzOiB5ID0gdF4zCiAgICAgLy8gQ2hhbmdlIHRo
ZSBmb3JtdWxhIHRvIHJlYWNoIHk9MSBhZnRlciAxMDAwIG1zOiB5ID0gKHQvMTAwMCleMwogICAg
IC8vIENoYW5nZSB0aGUgZm9ybXVsYSB0byByZWFjaCB5PSh5c3AgLSB5MCkgYWZ0ZXIgMTAwMCBt
czogeSA9ICh5c3AgLSB5MCkgKiAodC8xMDAwKV4zCkBAIC0yNTcsNyArMjU3LDcgQEAgUElEQ29u
dHJvbGxlci5wcm90b3R5cGUgPQogCiAgICAgLy8gRGVjaWRlcyBob3cgbXVjaCB0aGUgcHJvcG9y
dGlvbmFsIGdhaW4gc2hvdWxkIGJlIGluY3JlYXNlZCBkdXJpbmcgdGhlIG1hbnVhbAogICAgIC8v
IGdhaW4gc3RhZ2UuIFdlIGNob29zZSB0byB1c2UgdGhlIHJhdGlvIG9mIHRoZSB1bHRpbWF0ZSBk
aXN0YW5jZSB0byB0aGUgY3VycmVudAotICAgIC8vIGRpc3RhbmNlIGFzIGFuIGluZGljYXRpb24g
b2YgaG93IG11Y2ggdGhlIHN5c3RlbSBpcyByZXNwb25zaXZlLiBXZSB3YW50IAorICAgIC8vIGRp
c3RhbmNlIGFzIGFuIGluZGljYXRpb24gb2YgaG93IG11Y2ggdGhlIHN5c3RlbSBpcyByZXNwb25z
aXZlLiBXZSB3YW50CiAgICAgLy8gdG8ga2VlcCB0aGUgaW5jcmVtZW50IHVuZGVyIGNvbnRyb2wg
c28gaXQgZG9lcyBub3QgY2F1c2UgdGhlIHN5c3RlbSBpbnN0YWJpbGl0eQogICAgIC8vIFNvIHdl
IGNob29zZSB0byB0YWtlIHRoZSBuYXR1cmFsIGxvZ2FyaXRobSBvZiB0aGlzIHJhdGlvLgogICAg
IF9nYWluSW5jcmVtZW50OiBmdW5jdGlvbih0LCB5LCBlKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFBJ
RENvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICAgICAgICAgIGlmICh5UG9zaXRpb24gPT0gUElE
Q29udHJvbGxlci55UG9zaXRpb25zLkFGVEVSX1NFVFBPSU5UKQogICAgICAgICAgICAgICAgIHRo
aXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuT1ZFUlNIT09UOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuT1ZF
UlNIT09UOgogICAgICAgICAgICAgaWYgKHlQb3NpdGlvbiA9PSBQSURDb250cm9sbGVyLnlQb3Np
dGlvbnMuQkVGT1JFX1NFVFBPSU5UKQogICAgICAgICAgICAgICAgIHRoaXMuX3N0YWdlID0gUElE
Q29udHJvbGxlci5zdGFnZXMuVU5ERVJTSE9PVDsKQEAgLTMxMyw3ICszMTMsNyBAQCBQSURDb250
cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgICAgIC8vIFRoZSBvdXB1dCBpcyBhIFBJRCBmdW5jdGlv
bi4KICAgICAgICByZXR1cm4gUCArIHRoaXMuX0kgKyBEOwogICAgIH0sCi0gICAgCisKICAgICAv
LyBBcHBseSBkaWZmZXJlbnQgc3RyYXRlZ2llcyBmb3IgdGhlIHR1bmluZyBiYXNlZCBvbiB0aGUg
c3RhZ2Ugb2YgdGhlIGNvbnRyb2xsZXIuCiAgICAgX3R1bmU6IGZ1bmN0aW9uKHQsIGgsIHksIGUp
CiAgICAgewpAQCAtMzMyLDcgKzMzMiw3IEBAIFBJRENvbnRyb2xsZXIucHJvdG90eXBlID0KICAg
ICAgICAgICAgICAgICAvLyBzZXQtcG9pbnQgeWV0CiAgICAgICAgICAgICAgICAgdGhpcy5fS3Ag
Kz0gdGhpcy5fZ2FpbkluY3JlbWVudCh0LCB5LCBlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
CisKICAgICAgICAgICAgIHJldHVybiB0aGlzLl90dW5lUChlKTsKIAogICAgICAgICBjYXNlIFBJ
RENvbnRyb2xsZXIuc3RhZ2VzLk9WRVJTSE9PVDoKQEAgLTM0Myw0MSArMzQzLDQxIEBAIFBJRENv
bnRyb2xsZXIucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICB0aGlzLl90MCA9IHQ7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fS3AgLz0gMjsKICAgICAgICAgICAgIH0KLSAgICAgICAgCisKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl90dW5lUChlKTsKLSAgICAKKwogICAgICAgICBjYXNlIFBJ
RENvbnRyb2xsZXIuc3RhZ2VzLlVOREVSU0hPT1Q6CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBlbmQgb2YgdGhlIFppZWdsZXLDosKATmljaG9scyBtZXRob2QuIFdlIG5lZWQgdG8gY2FsY3Vs
YXRlIHRoZQogICAgICAgICAgICAgLy8gaW50ZWdyYWwgYW5kIGRlcml2YXRpdmUgcGVyaW9kcy4K
ICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fVGkgPT0gInVuZGVmaW5lZCIpIHsKICAgICAg
ICAgICAgICAgICAvLyB0IGlzIHRoZSB0aW1lIG9mIHRoZSBlbmQgb2YgdGhlIGZpcnN0IG92ZXJz
aG90CiAgICAgICAgICAgICAgICAgdmFyIFR1ID0gdCAtIHRoaXMuX3QwOwotICAgICAgICAKKwog
ICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc3lzdGVtIHBhcmFtZXRlcnMgZnJvbSBL
cCBhbmQgVHUgYXNzdW1pbmcKICAgICAgICAgICAgICAgICAvLyBhICJzb21lIG92ZXJzaG9vdCIg
Y29udHJvbCB0eXBlLiBTZWU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVk
aWEub3JnL3dpa2kvWmllZ2xlciVFMiU4MCU5M05pY2hvbHNfbWV0aG9kCiAgICAgICAgICAgICAg
ICAgdGhpcy5fVGkgPSBUdSAvIDI7CiAgICAgICAgICAgICAgICAgdGhpcy5fVGQgPSBUdSAvIDM7
CiAgICAgICAgICAgICAgICAgdGhpcy5fS3AgPSAwLjMzICogdGhpcy5fS3A7Ci0gICAgICAgIAor
CiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB0cmFja2luZyB0aW1lLgogICAgICAg
ICAgICAgICAgIHRoaXMuX1R0ID0gTWF0aC5zcXJ0KHRoaXMuX1RpICogdGhpcy5fVGQpOwogICAg
ICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1bmVQSUQo
aCwgeSwgZSk7Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMu
U0FUVVJBVEU6CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHVuZVBJRChoLCB5LCBlKTsKICAg
ICAgICAgfQotICAgICAgICAKKwogICAgICAgICByZXR1cm4gMDsKICAgICB9LAotICAgIAorCiAg
ICAgLy8gRW5zdXJlcyB0aGUgc3lzdGVtIGRvZXMgbm90IGZsdWN0dWF0ZXMuCiAgICAgX3NhdHVy
YXRlOiBmdW5jdGlvbih2LCBlKQogICAgIHsKICAgICAgICAgdmFyIHUgPSB2OwotICAgICAgICAK
KwogICAgICAgICBzd2l0Y2ggKHRoaXMuX3N0YWdlKSB7CiAgICAgICAgIGNhc2UgUElEQ29udHJv
bGxlci5zdGFnZXMuT1ZFUlNIT09UOgogICAgICAgICBjYXNlIFBJRENvbnRyb2xsZXIuc3RhZ2Vz
LlVOREVSU0hPT1Q6CkBAIC0zODksNyArMzg5LDcgQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUg
PQogICAgICAgICAgICAgICAgIHRoaXMuX21heCA9IE1hdGgubWF4KHRoaXMuX21heCwgdGhpcy5f
b3V0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKKwogICAg
ICAgICBjYXNlIFBJRENvbnRyb2xsZXIuc3RhZ2VzLlNBVFVSQVRFOgogICAgICAgICAgICAgY29u
c3QgbGltaXRQZXJjZW50YWdlID0gMC45MDsKICAgICAgICAgICAgIHZhciBtaW4gPSB0aGlzLl9t
aW4gPiAwID8gTWF0aC5taW4odGhpcy5fbWluLCB0aGlzLl9tYXggKiBsaW1pdFBlcmNlbnRhZ2Up
IDogdGhpcy5fbWluOwpAQCAtMzk5LDEzICszOTksMTMgQEAgUElEQ29udHJvbGxlci5wcm90b3R5
cGUgPQogICAgICAgICAgICAgLy8gQ2xpcCB0aGUgY29udHJvbGxlciBvdXRwdXQgdG8gdGhlIG1p
bi1tYXggdmFsdWVzCiAgICAgICAgICAgICBvdXQgPSBNYXRoLm1heChNYXRoLm1pbihtYXgsIG91
dCksIG1pbik7CiAgICAgICAgICAgICB1ID0gb3V0IC0gdGhpcy5fb3V0OwotICAgIAorCiAgICAg
ICAgICAgICAvLyBBcHBseSB0aGUgYmFjay1jYWxjdWxhdGlvbiBhbmQgdHJhY2tpbmcKICAgICAg
ICAgICAgIGlmICh1ICE9IHYpCiAgICAgICAgICAgICAgICAgdSArPSAodGhpcy5fS3AgKiB0aGlz
Ll9UdCAvIHRoaXMuX1RpKSAqIGU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICAKKwogICAgICAgICB0aGlzLl9vdXQgKz0gdTsKICAgICAgICAgcmV0dXJuIHU7CiAgICAg
fSwKQEAgLTQxNSwxNCArNDE1LDE0IEBAIFBJRENvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICB0
dW5lOiBmdW5jdGlvbih0LCBoLCB5KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU3RhZ2Uo
eSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIEN1cnJlbnQgZXJyb3IuCiAgICAgICAgIHZhciBl
ID0gdGhpcy5feXNwIC0geTsKICAgICAgICAgdmFyIHYgPSB0aGlzLl90dW5lKHQsIGgsIHksIGUp
OwotICAgICAgICAKKwogICAgICAgICAvLyBTYXZlIGUgZm9yIHRoZSBuZXh0IGNhbGwuCiAgICAg
ICAgIHRoaXMuX2VvbGQgPSBlOwotICAgICAgICAKKwogICAgICAgICAvLyBBcHBseSBiYWNrLWNh
bGN1bGF0aW9uIGFuZCB0cmFja2luZyB0byBhdm9pZCBpbnRlZ3JhdG9yIHdpbmR1cAogICAgICAg
ICByZXR1cm4gdGhpcy5fc2F0dXJhdGUodiwgZSk7CiAgICAgfQpAQCAtNDgwLDMgKzQ4MCwxMiBA
QCBLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KICAgICAgICAgcmV0dXJuIFZlY3RvcjMubXVs
dGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsICB0aGlzLl92ZWNYX2VzdCk7CiAgICAgfQogfQorCitm
dW5jdGlvbiBJZGVudGl0eUVzdGltYXRvcigpIHt9CitJZGVudGl0eUVzdGltYXRvci5wcm90b3R5
cGUgPQoreworICAgIGVzdGltYXRlOiBmdW5jdGlvbihjdXJyZW50KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGN1cnJlbnQ7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzIGIvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQu
anMKaW5kZXggMTM4YjA0NjI5Nzc4YzlmYTc2OTliN2Q1NWQwMDNmM2Y4YTFhNjlkNi4uMjdkMDE0
MWM3MDMwYTMwYjkxMmY3ODE4MTExNjEzYTg3NzRmYjFkNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVyaW5nLXRleHQuanMK
KysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xh
eWVyaW5nLXRleHQuanMKQEAgLTExMyw2ICsxMTMsMTEgQEAgTGF5ZXJpbmdUZXh0U3RhZ2UgPSBV
dGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2UsCiAgICAgICAgICAgICB0aGlzLl9wb3BUZXh0
RWxlbWVudCgpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOwor
ICAgIH0sCisKKyAgICBjb21wbGV4aXR5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fdGV4dEVsZW1lbnRzLmxlbmd0aDsKICAgICB9CiB9KTsKIApkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpp
bmRleCA5YzhmNWRkN2U1MGQxZjUwZGRhNGUwMmZjYTljNDI2MzcxNGU4NmNhLi43Y2M1ODk4MjM0
OTJiNzY1N2QxMDg1NWQyMjUyYmI5NjNjNDBmNWVlIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzMCBAQAorMjAxNi0wMS0wMyAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXBkYXRlIGRhdGEgcmVwb3J0aW5nIGFuZCBhbmFseXNpcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjcwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hvdyBuZXcgZ3JhcGggZGF0YS4gUHJvdmlk
ZSBjb250cm9scyB0byBzaG93IGRpZmZlcmVudCBzZXJpZXMgZGF0YS4gUHJvdmlkZSBhbgorICAg
ICAgICBpbnRlcmFjdGl2ZSBjdXJzb3IgdGhhdCBzaG93cyB0aGUgZGF0YSBhdCBhIGdpdmVuIHNh
bXBsZS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0bWw6IEFkZCBhIG5hdiBz
ZWN0aW9uIGluICNyZXN1bHRzLiBFYWNoIHBhcnQgb2YgdGhlIGdyYXBoCisgICAgICAgIGhhcyBh
IGNoZWNrYm94IGZvciB2aXN1YWwgdG9nZ2xpbmcsIGFzIHdlbGwgYXMgY29tcGFuaW9uIHNwYW5z
IHRvIGNvbnRhaW4gdGhlIGRhdGEuCisgICAgICAgICAgICAgICAgVGhlIG51bWJlcnMgd2lsbCBh
bHdheXMgYmUgc2hvd24gZXZlbiBpZiB0aGUgU1ZHIGlzbid0LgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczoKKyAgICAgICAgKCNzdWl0
ZXMpOiBBZGp1c3Qgc3BhY2luZyB3aGVuIGRvaW5nIGZpeGVkIGNvbXBsZXhpdHkuCisgICAgICAg
ICgjdGVzdC1ncmFwaCBuYXYpOiBQbGFjZSB0aGUgbmF2IGluIHRoZSB1cHBlciByaWdodCBjb3Ju
ZXIuCisgICAgICAgICgjdGVzdC1ncmFwaC1kYXRhID4gc3ZnKTogRml4IHRoZSBGUFMgc2NhbGUg
ZnJvbSAwLTYwLiBJdCBtYWtlcyB0aGUgcmF3IEZQUyBnb2VzIHBhc3QKKyAgICAgICAgdGhhdCBz
Y2FsZS4gQWxsb3cgaXQgdG8gc2hvdy4KKyAgICAgICAgKC50YXJnZXQtZnBzKTogQWRkIGEgZG90
dGVkIGxpbmUgZm9yIHdoZXJlIHRoZSBiZW5jaG1hcmsgaXMgc3VwcG9zZWQgdG8gc2V0dGxlIGZv
ciBGUFMuCisgICAgICAgICgjY3Vyc29yIGxpbmUpOiBUaGUgY3Vyc29yIGNvbnRhaW5zIGEgbGlu
ZSBhbmQgaGlnaGxpZ2h0IGNpcmNsZXMgZm9yIHRoZSBkYXRhIGJlaW5nIHNob3duLgorICAgICAg
ICAoI2N1cnNvciBjaXJjbGUpOgorICAgICAgICAoI2NvbXBsZXhpdHkgcGF0aCk6IFRoaXMgYW5k
IHJ1bGVzIGFmdGVyd2FyZCBhcmUgbmFtZWQgYnkgc2VyaWVzIHR5cGUuCisgICAgICAgICgjY29t
cGxleGl0eSBjaXJjbGUpOgorICAgICAgICAoI2ZpbHRlcmVkRlBTIHBhdGgpOgorICAgICAgICAo
I2ZpbHRlcmVkRlBTIGNpcmNsZSk6CisgICAgICAgICgjcmF3RlBTIHBhdGgpOgorICAgICAgICAo
I2ludGVydmFsRlBTIGNpcmNsZSk6CisgICAgICAgICgubGVmdC1zYW1wbGVzKTogRGVsZXRlZC4K
KyAgICAgICAgKC5yaWdodC1zYW1wbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qczoKKyAgICAgICAgKGluaXRpYWxp
emUpOiBBZGQgYSAiY2hhbmdlZCIgbGlzdGVuZXIgd2hlbiB0aGUgY2hlY2tib3hlcyBjaGFuZ2Ug
aW4gdGhlIG5hdi4KKyAgICAgICAgKG9uQmVuY2htYXJrT3B0aW9uc0NoYW5nZWQpOiBSZW5hbWVk
LgorICAgICAgICAoc2hvd1Rlc3RHcmFwaCk6IEFsbCBncmFwaCBkYXRhIGlzIHBhc3NlZCBpbiBh
cyBncmFwaERhdGEgaW5zdGVhZCBvZiBhcyBhcmd1bWVudHMuCisgICAgICAgICogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2dyYXBoLmpzOiBFeHRlbmQgQmVuY2htYXJrQ29udHJv
bGxlci4gV2hlbiBzaG93aW5nCisgICAgICAgIGEgbmV3IGdyYXBoLCBjYWxsIHVwZGF0ZUdyYXBo
RGF0YSgpLiBJdCBjcmVhdGVzIGFsbCBvZiB0aGUgZDMgZ3JhcGhzLiBvbkdyYXBoT3B0aW9uc0No
YW5nZWQoKQorICAgICAgICB0b2dnbGVzIHRoZSBkYXRhIG9uIGFuZCBvZmYuCisgICAgICAgICh1
cGRhdGVHcmFwaERhdGEpOiBBZGQgdGhlIGF4ZXMuIEFkZCB0aGUgYXZlcmFnZSBsaW5lcyBhbmQg
bWFya2VycyBmb3Igc2FtcGxlIHRpbWUgYW5kCisgICAgICAgIHRhcmdldCBGUFMuIEFkZCB0aGUg
Y3Vyc29yIGdyb3VwLiBVc2UgaGVscGVyIGZ1bmN0aW9uIGFkZERhdGEoKSB0byBhZGQgdGhlIGRh
dGEuIE9uIHRvcCBvZgorICAgICAgICBldmVyeXRoaW5nIGFkZCBhIHRyYW5zcGFyZW50IGFyZWEg
d2hpY2ggd2lsbCBjYXRjaCBhbGwgb2YgdGhlIG1vdXNlIGV2ZW50cy4gV2hlbiB0aGUgbW91c2UK
KyAgICAgICAgbW92ZXMgaW4gdGhlIGdyYXBoLCBmaW5kIHRoZSBjbG9zZXN0IGRhdGEgcG9pbnQs
IHNob3cgdGhlIGRhdGEgaW4gdGhlIG5hdiBhcmVhLCBhbmQgaGlnaGxpZ2h0CisgICAgICAgIHRo
ZSBkYXRhIHBvaW50cy4KKyAgICAgICAgKGFkZERhdGEpOiBBZGRzIGEgbGluZSBhbmQgY2lyY2xl
IGZvciBlYWNoIGRhdGEgcG9pbnQuIEFsc28gYWRkcyBhIGhpZ2hsaWdodCBjdXJzb3Igd2l0aCBh
CisgICAgICAgIHNpemUgYSBsaXR0bGUgbGFyZ2VyIHRoYW4gdGhlIGNpcmNsZSByYWRpdXMgZm9y
IHRoZSBkYXRhIHBvaW50cy4KKyAgICAgICAgKG9uR3JhcGhPcHRpb25zQ2hhbmdlZCk6IENhbGxl
ZCB3aGVuIGRhdGEgaXMgdmlzdWFsbHkgdG9nZ2xlZC4KKyAgICAgICAgKHNob3dPckhpZGVOb2Rl
cyk6IEhlbHBlciBmdW5jdGlvbiB0byB0b2dnbGUgdGhlIC5oaWRkZW4gY2xhc3MuCisgICAgICAg
ICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qczoKKyAgICAgICAgKFJlc3VsdHNE
YXNoYm9hcmQucHJvdG90eXBlLmdldCBkYXRhKTogR2V0IHJpZCBvZiB0aGUgYXJndW1lbnRzIGZv
ciBfcHJvY2Vzc0RhdGEuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9hZGRHcmFw
aEJ1dHRvbik6IFNob3ZlIGFsbCBvZiB0aGUgZ3JhcGggZGF0YSBpbnRvIGEgc2luZ3VsYXIgb2Jq
ZWN0LgorCisgICAgICAgIFByb2R1Y2luZyB0aGUgSlNPTiBjYW4gdGFrZSBhIHdoaWxlIHdpdGgg
YWxsIG9mIHRoZSBkYXRhLiBNYWtlIGl0IG9uLWRlbWFuZCB3aXRoIGEKKyAgICAgICAgYnV0dG9u
LgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0
ZXIuanM6CisgICAgICAgIChzaG93UmVzdWx0cyk6IFdoZW4gc2hvd2luZyB0aGUgcmVzdWx0cywg
ZG9uJ3Qgc2VyaWFsaXplIHRoZSBKU09OIGRhdGEuIE1vdmUgdGhhdCB0by4uLgorICAgICAgICAo
c2hvd0pTT05SZXN1bHRzKTogLi4uaGVyZS4gUmVtb3ZlIHRoZSBidXR0b24uCisKKyAgICAgICAg
KiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBBZGQgYSBidXR0b24uIFRoZSBidXR0b24gd2ls
bCByZW1vdmUgaXRzZWxmIGFuZCBwb3B1bGF0ZQorICAgICAgICB0aGUgdGV4dGFyZWEgd2l0aCB0
aGUgSlNPTiBkYXRhLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9hbmltb21ldGVyLmNzczoKKyAgICAgICAgKC5oaWRkZW4pOiBBZGQgYSB1bml2ZXJzYWwgaGlk
ZGVuIGNsYXNzLgorICAgICAgICAoI3Jlc3VsdHMgYnV0dG9uLnNtYWxsLWJ1dHRvbik6IFByb21v
dGUgdGhlIHNtYWxsLWJ1dHRvbiBzdHlsZXMgdG8gdGhlIHdob2xlIHJlc3VsdHMKKyAgICAgICAg
c2VjdGlvbiBmb3IgdXNlIGluIHRoZSBKU09OIGJ1dHRvbi4KKyAgICAgICAgKCNyZXN1bHRzIGJ1
dHRvbi5zbWFsbC1idXR0b246YWN0aXZlKToKKyAgICAgICAgKCNyZXN1bHRzLWRhdGEgYnV0dG9u
LnNtYWxsLWJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgICgjcmVzdWx0cy1kYXRhIGJ1dHRvbi5z
bWFsbC1idXR0b246YWN0aXZlKTogRGVsZXRlZC4KKworICAgICAgICBSZWZhY3RvciBob3cgQW5p
bWF0b3IgZG9lcyBpdHMgcmVjb3JkaW5nLgorCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9y
ZXNvdXJjZXMvbWF0aC5qczogQ3JlYXRlIGEgbmV3LCBzaW1wbGUgZXN0aW1hdG9yIHRoYXQganVz
dCByZXR1cm5zCisgICAgICAgIHRoZSBzYW1lIGludGVydmFsIGZyYW1lIHJhdGUgZm9yIGFkanVz
dG1lbnQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qczoKKyAg
ICAgICAgKEFuaW1hdG9yKTogUmVtb3ZlIF9kcm9wRnJhbWVDb3VudCwgYW5kIG1ha2UgdmFyaWFi
bGVzIG1vcmUgYWNjdXJhdGUgZGVzY3JpYmVkLgorICAgICAgICAoQW5pbWF0b3IucHJvdG90eXBl
LmluaXRpYWxpemUpOiBVc2UgdGhlIGlkZW50aXR5IGVzdGltYXRvciBpbnN0ZWFkIG9mIHVzaW5n
IGEgYm9vbC4KKyAgICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5faW50ZXJ2YWxUaW1lRGVsdGEp
OiBSZW5hbWUsIG9ubHkgdXNlZCBpbnRlcm5hbGx5LgorICAgICAgICAoQW5pbWF0b3IucHJvdG90
eXBlLl9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lKTogQXNzdW1lIHdlIGRyb3Agb25lIGZyYW1l
IGZvciBhZGp1c3RtZW50CisgICAgICAgIG9mIHRoZSBzY2VuZS4gSWYgd2UgYXJlIHdpdGhpbiB0
aGUgbnVtYmVyIG9mIGZyYW1lcyB0byBtZWFzdXJlIGZvciB0aGUgaW50ZXJ2YWwsIGp1c3QKKyAg
ICAgICAgcmVjb3JkIHRoZSB0aW1lc3RhbXAuIE90aGVyd2lzZSB3ZSBhcmUgcmVhZHkgdG8gZXZh
bHVhdGUgYW5kIGFkanVzdCB0aGUgc2NlbmUuIFJlY29yZAorICAgICAgICB0aGUgaW50ZXJ2YWwg
ZnJhbWUgcmF0ZSBhbmQgdGhlIGVzdGltYXRvcidzIGZyYW1lIHJhdGUuCisKKyAgICAgICAgQXZv
aWQgcHJvY2Vzc2luZyB0aGUgZGF0YSB0aHJvdWdoIHRoZSBFeHBlcmltZW50IHdoaWxlIHRoZSB0
ZXN0IGlzIHJ1bm5pbmcuIFJlY29uZmlndXJlCisgICAgICAgIHRoZSBzYW1wbGVyIHRvIGp1c3Qg
cmVjb3JkIHRoZSByYXcgc2FtcGxlcy4gQWZ0ZXIgdGhlIHRlc3QgaXMgZG9uZSwgcnVuIHRoZSBz
YW1wbGVzIHRocm91Z2gKKyAgICAgICAgdGhlIEV4cGVyaW1lbnQgdG8gZ2V0IHRoZSBzY29yZS4K
KworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanM6CisgICAgICAgIChF
eHBlcmltZW50KTogRm9sZCBfaW5pdCgpIGludG8gdGhlIGNvbnN0cnVjdG9yIHNpbmNlIG5vYm9k
eSBlbHNlIHdpbGwgY2FsbCBpdC4gVGhpcyBpcyBub3QKKyAgICAgICAgbmVlZGVkIHVudGlsIHRo
ZSB0ZXN0IGNvbmNsdWRlcywgc28gcmVtb3ZlIHN0YXJ0U2FtcGxpbmcoKS4gQ2xpZW50cyBzaG91
bGQganVzdCBjYWxsIHNhbXBsZSgpLgorICAgICAgICAoU2FtcGxlcik6IFByZS1hbGxvY2F0ZSBh
cnJheXMgZ2l2ZW4gdGhlIG51bWJlciBvZiBkYXRhIHBvaW50cyBiZWluZyByZWNvcmRlZCwgYW5k
IGEgY2FwYWNpdHkKKyAgICAgICAgb2YgaG93IG1hbnkgc2FtcGxlcyB3aWxsIGJlIHVzZWQuIFRo
ZSBwcm9jZXNzb3IgaXMgYSBjYWxsZWQgd2hlbiBpdCdzIHRpbWUgdG8gcHJvY2VzcyB0aGUgZGF0
YQorICAgICAgICBzaW5jZSB0aGF0IGlzIHRoZSBjbGllbnQgYWxzbyB0ZWxsaW5nIHRoZSBTYW1w
bGVyIHdoYXQgdG8gcmVjb3JkLgorICAgICAgICAgICAgICAgIEludHJvZHVjZSB0aGUgbm90aW9u
IG9mIG1hcmtzIGFzIHdlbGwsIHdoaWNoIGFsbG93cyB0aGUgY2xpZW50IHRvIG1hcmsgd2hlbiBh
bgorICAgICAgICBldmVudCBvY2N1cnMuIFdoZW4gd2UgbWFyayBzYW1wbGUgc3RhcnQsIHdlIGNh
biBhdHRhY2ggdGhlIHRpbWVzdGFtcCB0aGVyZSwgaW5zdGVhZCBvZiBzdG9yaW5nCisgICAgICAg
IGl0IHNlcGFyYXRlbHkuCisgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS5zdGFydFNhbXBsaW5n
KTogRGVsZXRlZC4gQ2xpZW50cyBzaG91bGQganVzdCBjYWxsIHJlY29yZCgpLgorICAgICAgICAo
U2FtcGxlci5wcm90b3R5cGUucmVjb3JkKTogVGhlIGRhdGEgdG8gcmVjb3JkIGlzIHBhc3NlZCBp
biBhcyB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS5tYXJr
KTogV2hlbiBhZGRpbmcgYSBtYXJrLCBhIGNsaWVudCBuZWVkcyB0byBwcm92aWRlIGEgdW5pcXVl
IHN0cmluZywgYW5kCisgICAgICAgIGNhbiBwcm92aWRlIGV4dHJhIGRhdGEgb2JqZWN0IGZvciBs
YXRlciByZXRyaWV2YWwuCisgICAgICAgIChTYW1wbGVyLnByb3RvdHlwZS5wcm9jZXNzKTogUmVu
YW1lZCBmcm9tIHRvSlNPTi4gVHJpbSB0aGUgc2FtcGxpbmcgYXJyYXlzIHRvIHdoYXQgd2FzIHVz
ZWQuCisgICAgICAgIENhbGwgdGhlIHByb2Nlc3NvciB0byBwcm9jZXNzIHRoZSBzYW1wbGVzLgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVu
bmVyLmpzOgorICAgICAgICAoQmVuY2htYXJrUnVubmVyLnByb3RvdHlwZS5fcnVuQmVuY2htYXJr
QW5kUmVjb3JkUmVzdWx0cyk6IENhbGwgcHJvY2VzcygpLgorCisgICAgICAgICogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvc3RyaW5ncy5qczogQWRkIHNvbWUgbmV3IHN0cmluZ3MsIHJlbW92ZSB0aGUg
Z3JhcGggb25lcyBzaW5jZSB0aGV5IGFyZQorICAgICAgICBub3QgdXNlZC4KKyAgICAgICAgKiBB
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAgICAoQmVuY2htYXJrKTog
Q3JlYXRlIGEgc2FtcGxlciB3aXRoIDQgc2VyaWVzLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgcG9p
bnRzIGV4cGVjdGVkIGlzIHRoZQorICAgICAgICBudW1iZXIgb2Ygc2Vjb25kcyBtdWx0aXBsaWVk
IGJ5IDYwIGZwcy4gQmVuY2htYXJrLCBhcyBhIGNsaWVudCBvZiB0aGUgU2FtcGxlciwga25vd3Mg
YWJvdXQgYWxsCisgICAgICAgIG9mIHRoZSBkYXRhIGJlaW5nIGFkZGVkIHRvIHRoZSBTYW1wbGVy
LiBJdCBpcyBhZGRlZCB0aHJvdWdoIHJlY29yZCgpLCBhbmQgcHJvY2Vzc2VkIHRocm91Z2gKKyAg
ICAgICAgcHJvY2Vzc1NhbXBsZXMoKS4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUudXBk
YXRlKTogTWFyayB3aGVuIHdlJ3ZlIHBhc3NlZCB3YXJtdXAgYW5kIGFyZSBzdGFydGluZyB0byBz
YW1wbGUuIEluY2x1ZGUKKyAgICAgICAgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY3VzdG9tIGRhdGEg
Zm9yIHRoZSBtYXJrLiBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byBzdG9yZSBpcyBzZXBhcmF0ZWx5
IGluCisgICAgICAgIHRoZSBTYW1wbGVyLiBGb2xkIHdoYXQgd2FzIGluIHJlY29yZCgpIGhlcmUs
IHNpbmNlIG5vdGhpbmcgZWxzZSBuZWVkcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgICAgIHJl
Y29yZCgpIG5vdyBqdXN0IHJlbGF5cyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIHNhbXBsZXIuCisg
ICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnJlY29yZCk6IENhbGxlZCBieSBBbmltYXRvciwg
d2hpY2ggcHJvdmlkZXMgdGhlIGRhdGEgdG8gdGhlIHNhbXBsZXIuCisgICAgICAgIEFuaW1hdG9y
J3MgY2FsbHMgdG8gdGhpcyBpcyBwYXJ0IG9mIGEgbGF0ZXIgcGF0Y2guIFJlcXVpcmVzIGVhY2gg
c3RhZ2UgdG8gcmV0dXJuIGl0cyBjb21wbGV4aXR5LgorICAgICAgICAoQmVuY2htYXJrLnByb3Rv
dHlwZS5wcm9jZXNzU2FtcGxlcyk6IElmIHRoZSBzYW1wbGluZyBtYXJrIGV4aXN0cywgYWRkIGl0
IHRvIHRoZSByZXN1bHRzLgorICAgICAgICAgICAgICAgIEdvIHRocm91Z2ggYWxsIG9mIHRoZSBz
YW1wbGVzLiBBbGwgc2FtcGxlcyBjb250YWluIGEgdGltZXN0YW1wIGFuZCBjb21wbGV4aXR5LiBX
ZQorICAgICAgICBjYWxjdWxhdGUgInJhdyBGUFMiIHdoaWNoIGlzIHRoZSB0aW1lIGRpZmZlcmVu
dGlhbCBmcm9tIHRoZSBwcmV2aW91cyBzYW1wbGUuIEF0IHJlZ3VsYXIgaW50ZXJ2YWxzCisgICAg
ICAgIHRoZSBLYWxtYW4tZmlsdGVyZWQgRlBTIGFuZCB0aGUgaW50ZXJ2YWwgYXZlcmFnZSBGUFMg
YXJlIGFsc28gcmVjb3JkZWQuIFdlIGFsc28gY3JlYXRlIHR3bworICAgICAgICBleHBlcmltZW50
cywgdG8gZ2V0IHRoZSBzY29yZXMgZm9yIHRoZSBjb21wbGV4aXR5IGFuZCBzbW9vdGhlZCBGUFMs
IGFuZCBhZGQgdGhvc2Ugc2FtcGxlcyB0bworICAgICAgICB0aGUgZXhwZXJpbWVudHMuIEdyYWIg
dGhvc2Ugc2NvcmVzIGFuZCBhZGQgdGhlbSBpbnRvIHJlc3VsdHMgYWxzby4KKworICAgICAgICBB
ZGQgY29tcGxleGl0eSgpIHRvIHRoZSB0ZXN0cyBmb3IgQmVuY2htYXJrLnJlY29yZCgpLgorICAg
ICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3Vu
Y2luZy1wYXJ0aWNsZXMuanM6CisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291
cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzOgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
dGV4dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qczoKKwogMjAxNS0xMi0yNyAgSm9uIExlZSAg
PGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgdGhlIHRlc3QgaGFybmVzcwo=
</data>
<flag name="review"
          id="293124"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268166</attachid>
            <date>2016-01-03 18:10:30 -0800</date>
            <delta_ts>2016-01-03 18:10:30 -0800</delta_ts>
            <desc>1. Avoid processing the data through the Experiment while the test is running.</desc>
            <filename>0001-Update-data-reporting-and-analysis.patch</filename>
            <type>text/plain</type>
            <size>22406</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA4NTY2MzdkY2ZmYTY3ODgzN2E0MGFjZmZhYTBiZTYyMTM5NWVjNzg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDMgSmFuIDIwMTYgMTY6NTY6NTQgLTA4MDAKU3ViamVjdDogW1BBVENIIDEvNF0gVXBkYXRlIGRh
dGEgcmVwb3J0aW5nIGFuZCBhbmFseXNpcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjY3MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpBdm9pZCBwcm9j
ZXNzaW5nIHRoZSBkYXRhIHRocm91Z2ggdGhlIEV4cGVyaW1lbnQgd2hpbGUgdGhlIHRlc3QgaXMg
cnVubmluZy4gUmVjb25maWd1cmUKdGhlIHNhbXBsZXIgdG8ganVzdCByZWNvcmQgdGhlIHJhdyBz
YW1wbGVzLiBBZnRlciB0aGUgdGVzdCBpcyBkb25lLCBydW4gdGhlIHNhbXBsZXMgdGhyb3VnaAp0
aGUgRXhwZXJpbWVudCB0byBnZXQgdGhlIHNjb3JlLgoKKiBBbmltb21ldGVyL3Jlc291cmNlcy9z
YW1wbGVyLmpzOgooRXhwZXJpbWVudCk6IEZvbGQgX2luaXQoKSBpbnRvIHRoZSBjb25zdHJ1Y3Rv
ciBzaW5jZSBub2JvZHkgZWxzZSB3aWxsIGNhbGwgaXQuIFRoaXMgaXMgbm90Cm5lZWRlZCB1bnRp
bCB0aGUgdGVzdCBjb25jbHVkZXMsIHNvIHJlbW92ZSBzdGFydFNhbXBsaW5nKCkuIENsaWVudHMg
c2hvdWxkIGp1c3QgY2FsbCBzYW1wbGUoKS4KKFNhbXBsZXIpOiBQcmUtYWxsb2NhdGUgYXJyYXlz
IGdpdmVuIHRoZSBudW1iZXIgb2YgZGF0YSBwb2ludHMgYmVpbmcgcmVjb3JkZWQsIGFuZCBhIGNh
cGFjaXR5Cm9mIGhvdyBtYW55IHNhbXBsZXMgd2lsbCBiZSB1c2VkLiBUaGUgcHJvY2Vzc29yIGlz
IGEgY2FsbGVkIHdoZW4gaXQncyB0aW1lIHRvIHByb2Nlc3MgdGhlIGRhdGEKc2luY2UgdGhhdCBp
cyB0aGUgY2xpZW50IGFsc28gdGVsbGluZyB0aGUgU2FtcGxlciB3aGF0IHRvIHJlY29yZC4KICAg
ICAgICBJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBtYXJrcyBhcyB3ZWxsLCB3aGljaCBhbGxvd3Mg
dGhlIGNsaWVudCB0byBtYXJrIHdoZW4gYW4KZXZlbnQgb2NjdXJzLiBXaGVuIHdlIG1hcmsgc2Ft
cGxlIHN0YXJ0LCB3ZSBjYW4gYXR0YWNoIHRoZSB0aW1lc3RhbXAgdGhlcmUsIGluc3RlYWQgb2Yg
c3RvcmluZwppdCBzZXBhcmF0ZWx5LgooU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6
IERlbGV0ZWQuIENsaWVudHMgc2hvdWxkIGp1c3QgY2FsbCByZWNvcmQoKS4KKFNhbXBsZXIucHJv
dG90eXBlLnJlY29yZCk6IFRoZSBkYXRhIHRvIHJlY29yZCBpcyBwYXNzZWQgaW4gYXMgdmFyaWFi
bGUgYXJndW1lbnRzLgooU2FtcGxlci5wcm90b3R5cGUubWFyayk6IFdoZW4gYWRkaW5nIGEgbWFy
aywgYSBjbGllbnQgbmVlZHMgdG8gcHJvdmlkZSBhIHVuaXF1ZSBzdHJpbmcsIGFuZApjYW4gcHJv
dmlkZSBleHRyYSBkYXRhIG9iamVjdCBmb3IgbGF0ZXIgcmV0cmlldmFsLgooU2FtcGxlci5wcm90
b3R5cGUucHJvY2Vzcyk6IFJlbmFtZWQgZnJvbSB0b0pTT04uIFRyaW0gdGhlIHNhbXBsaW5nIGFy
cmF5cyB0byB3aGF0IHdhcyB1c2VkLgpDYWxsIHRoZSBwcm9jZXNzb3IgdG8gcHJvY2VzcyB0aGUg
c2FtcGxlcy4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1
bm5lci5qczoKKEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1bkJlbmNobWFya0FuZFJlY29y
ZFJlc3VsdHMpOiBDYWxsIHByb2Nlc3MoKS4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5n
cy5qczogQWRkIHNvbWUgbmV3IHN0cmluZ3MsIHJlbW92ZSB0aGUgZ3JhcGggb25lcyBzaW5jZSB0
aGV5IGFyZQpub3QgdXNlZC4KKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgoo
QmVuY2htYXJrKTogQ3JlYXRlIGEgc2FtcGxlciB3aXRoIDQgc2VyaWVzLiBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgcG9pbnRzIGV4cGVjdGVkIGlzIHRoZQpudW1iZXIgb2Ygc2Vjb25kcyBtdWx0aXBs
aWVkIGJ5IDYwIGZwcy4gQmVuY2htYXJrLCBhcyBhIGNsaWVudCBvZiB0aGUgU2FtcGxlciwga25v
d3MgYWJvdXQgYWxsCm9mIHRoZSBkYXRhIGJlaW5nIGFkZGVkIHRvIHRoZSBTYW1wbGVyLiBJdCBp
cyBhZGRlZCB0aHJvdWdoIHJlY29yZCgpLCBhbmQgcHJvY2Vzc2VkIHRocm91Z2gKcHJvY2Vzc1Nh
bXBsZXMoKS4KKEJlbmNobWFyay5wcm90b3R5cGUudXBkYXRlKTogTWFyayB3aGVuIHdlJ3ZlIHBh
c3NlZCB3YXJtdXAgYW5kIGFyZSBzdGFydGluZyB0byBzYW1wbGUuIEluY2x1ZGUKdGhlIHRpbWVz
dGFtcCBpbiB0aGUgY3VzdG9tIGRhdGEgZm9yIHRoZSBtYXJrLiBUaGlzIGF2b2lkcyB0aGUgbmVl
ZCB0byBzdG9yZSBpcyBzZXBhcmF0ZWx5IGluCnRoZSBTYW1wbGVyLiBGb2xkIHdoYXQgd2FzIGlu
IHJlY29yZCgpIGhlcmUsIHNpbmNlIG5vdGhpbmcgZWxzZSBuZWVkcyB0aGlzIGZ1bmN0aW9uYWxp
dHkuCnJlY29yZCgpIG5vdyBqdXN0IHJlbGF5cyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIHNhbXBs
ZXIuCihCZW5jaG1hcmsucHJvdG90eXBlLnJlY29yZCk6IENhbGxlZCBieSBBbmltYXRvciwgd2hp
Y2ggcHJvdmlkZXMgdGhlIGRhdGEgdG8gdGhlIHNhbXBsZXIuCkFuaW1hdG9yJ3MgY2FsbHMgdG8g
dGhpcyBpcyBwYXJ0IG9mIGEgbGF0ZXIgcGF0Y2guIFJlcXVpcmVzIGVhY2ggc3RhZ2UgdG8gcmV0
dXJuIGl0cyBjb21wbGV4aXR5LgooQmVuY2htYXJrLnByb3RvdHlwZS5wcm9jZXNzU2FtcGxlcyk6
IElmIHRoZSBzYW1wbGluZyBtYXJrIGV4aXN0cywgYWRkIGl0IHRvIHRoZSByZXN1bHRzLgogICAg
ICAgIEdvIHRocm91Z2ggYWxsIG9mIHRoZSBzYW1wbGVzLiBBbGwgc2FtcGxlcyBjb250YWluIGEg
dGltZXN0YW1wIGFuZCBjb21wbGV4aXR5LiBXZQpjYWxjdWxhdGUgInJhdyBGUFMiIHdoaWNoIGlz
IHRoZSB0aW1lIGRpZmZlcmVudGlhbCBmcm9tIHRoZSBwcmV2aW91cyBzYW1wbGUuIEF0IHJlZ3Vs
YXIgaW50ZXJ2YWxzCnRoZSBLYWxtYW4tZmlsdGVyZWQgRlBTIGFuZCB0aGUgaW50ZXJ2YWwgYXZl
cmFnZSBGUFMgYXJlIGFsc28gcmVjb3JkZWQuIFdlIGFsc28gY3JlYXRlIHR3bwpleHBlcmltZW50
cywgdG8gZ2V0IHRoZSBzY29yZXMgZm9yIHRoZSBjb21wbGV4aXR5IGFuZCBzbW9vdGhlZCBGUFMs
IGFuZCBhZGQgdGhvc2Ugc2FtcGxlcyB0bwp0aGUgZXhwZXJpbWVudHMuIEdyYWIgdGhvc2Ugc2Nv
cmVzIGFuZCBhZGQgdGhlbSBpbnRvIHJlc3VsdHMgYWxzby4KCkFkZCBjb21wbGV4aXR5KCkgdG8g
dGhlIHRlc3RzIGZvciBCZW5jaG1hcmsucmVjb3JkKCkuCiogQW5pbW9tZXRlci90ZXN0cy9ib3Vu
Y2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKiBBbmltb21l
dGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6CiogQW5pbW9tZXRl
ci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanM6CiogQW5pbW9tZXRlci90ZXN0
cy90ZXh0L3Jlc291cmNlcy9sYXllcmluZy10ZXh0LmpzOgotLS0KIC4uLi9yZXNvdXJjZXMvZGVi
dWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMgICAgIHwgICAyICstCiBQZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanMgICB8IDExMyArKysrKysrKy0tLS0t
LS0tLS0tLS0KIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5q
cyAgIHwgICA4ICstCiAuLi4vcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyAgICAgICAg
ICAgICAgICB8ICAgNSArCiAuLi4vdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9u
cy5qcyAgICAgICB8ICAgNSArCiAuLi4vdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJz
LmpzICAgICAgICAgICB8ICAgNSArCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFp
bi5qcyAgICAgICAgICAgICB8ICA3NiArKysrKysrKysrKystLQogLi4uL3Rlc3RzL3RleHQvcmVz
b3VyY2VzL2xheWVyaW5nLXRleHQuanMgICAgICAgICAgfCAgIDUgKwogUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTUgKysrKysrKysrKwogOSBm
aWxlcyBjaGFuZ2VkLCAxODkgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIv
YmVuY2htYXJrLXJ1bm5lci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2JlbmNobWFyay1ydW5uZXIuanMKaW5kZXggMzc2YjUxYi4uOGZkMTZm
NSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1
Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9iZW5jaG1hcmstcnVubmVyLmpzCkBAIC05Niw3
ICs5Niw3IEBAIEJlbmNobWFya1J1bm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBiZW5j
aG1hcmsgPSBuZXcgY29udGVudFdpbmRvdy5iZW5jaG1hcmtDbGFzcyhvcHRpb25zKTsKICAgICAg
ICAgYmVuY2htYXJrLnJ1bigpLnRoZW4oZnVuY3Rpb24oc2FtcGxlcikgewogICAgICAgICAgICAg
dmFyIHNhbXBsZXJzID0gc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gfHwge307Ci0g
ICAgICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci50b0pTT04odHJ1ZSwgdHJ1
ZSk7CisgICAgICAgICAgICBzYW1wbGVyc1t0ZXN0Lm5hbWVdID0gc2FtcGxlci5wcm9jZXNzKG9w
dGlvbnMpOwogICAgICAgICAgICAgc2VsZi5fc3VpdGVzU2FtcGxlcnNbc3VpdGUubmFtZV0gPSBz
YW1wbGVyczsKIAogICAgICAgICAgICAgaWYgKHNlbGYuX2NsaWVudCAmJiBzZWxmLl9jbGllbnQu
ZGlkUnVuVGVzdCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNv
dXJjZXMvc2FtcGxlci5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
c2FtcGxlci5qcwppbmRleCBkYjA5MzVmLi5jZDFlZmZmIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3NhbXBsZXIuanMKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zYW1wbGVyLmpzCkBAIC0yMiwxMiArMjIsMTQgQEAg
dmFyIFN0YXRpc3RpY3MgPQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHZhciByb290
cyA9IHZhbHVlcy5tYXAoZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuICBNYXRoLnBvdyh2YWx1ZSwg
MSAvIHZhbHVlcy5sZW5ndGgpOyB9KQogICAgICAgICByZXR1cm4gcm9vdHMucmVkdWNlKGZ1bmN0
aW9uKGEsIGIpIHsgcmV0dXJuIGEgKiBiOyB9KTsKLSAgICB9ICAgCisgICAgfQogfQogCiBmdW5j
dGlvbiBFeHBlcmltZW50KCkKIHsKLSAgICB0aGlzLl9pbml0KCk7CisgICAgdGhpcy5fc3VtID0g
MDsKKyAgICB0aGlzLl9zcXVhcmVTdW0gPSAwOworICAgIHRoaXMuX251bWJlck9mU2FtcGxlcyA9
IDA7CiAgICAgdGhpcy5fbWF4SGVhcCA9IEFsZ29yaXRobS5jcmVhdGVNYXhIZWFwKEV4cGVyaW1l
bnQuZGVmYXVsdHMuQ09OQ0VSTl9TSVpFKTsKIH0KIApAQCAtMzksMjIgKzQxLDYgQEAgRXhwZXJp
bWVudC5kZWZhdWx0cyA9CiAKIEV4cGVyaW1lbnQucHJvdG90eXBlID0KIHsKLSAgICBfaW5pdDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fc3VtID0gMDsKLSAgICAgICAgdGhpcy5f
c3F1YXJlU3VtID0gMDsKLSAgICAgICAgdGhpcy5fbnVtYmVyT2ZTYW1wbGVzID0gMDsKLSAgICB9
LAotICAgIAotICAgIC8vIENhbGxlZCBhZnRlciBhIHdhcm0tdXAgcGVyaW9kCi0gICAgc3RhcnRT
YW1wbGluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIG1lYW4gPSB0aGlzLm1lYW4o
KTsKLSAgICAgICAgdGhpcy5faW5pdCgpOwotICAgICAgICB0aGlzLl9tYXhIZWFwLmluaXQoKTsK
LSAgICAgICAgdGhpcy5zYW1wbGUobWVhbik7Ci0gICAgfSwKLSAgICAKICAgICBzYW1wbGU6IGZ1
bmN0aW9uKHZhbHVlKQogICAgIHsKICAgICAgICAgdGhpcy5fc3VtICs9IHZhbHVlOwpAQCAtNjIs
OTEgKzQ4LDgyIEBAIEV4cGVyaW1lbnQucHJvdG90eXBlID0KICAgICAgICAgdGhpcy5fbWF4SGVh
cC5wdXNoKHZhbHVlKTsKICAgICAgICAgKyt0aGlzLl9udW1iZXJPZlNhbXBsZXM7CiAgICAgfSwK
LSAgICAKKwogICAgIG1lYW46IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBTdGF0
aXN0aWNzLnNhbXBsZU1lYW4odGhpcy5fbnVtYmVyT2ZTYW1wbGVzLCB0aGlzLl9zdW0pOwogICAg
IH0sCi0gICAgCisKICAgICBzdGFuZGFyZERldmlhdGlvbjogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFN0YXRpc3RpY3MudW5iaWFzZWRTYW1wbGVTdGFuZGFyZERldmlhdGlvbih0
aGlzLl9udW1iZXJPZlNhbXBsZXMsIHRoaXMuX3N1bSwgdGhpcy5fc3F1YXJlU3VtKTsKICAgICB9
LAotICAgIAorCiAgICAgcGVyY2VudGFnZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IG1lYW4gPSB0aGlzLm1lYW4oKTsKICAgICAgICAgcmV0dXJuIG1lYW4gPyB0aGlzLnN0YW5kYXJk
RGV2aWF0aW9uKCkgKiAxMDAgLyBtZWFuIDogMDsKICAgICB9LAotICAgIAorCiAgICAgY29uY2Vy
bjogZnVuY3Rpb24ocGVyY2VudGFnZSkKICAgICB7CiAgICAgICAgIHZhciBzaXplID0gTWF0aC5j
ZWlsKHRoaXMuX251bWJlck9mU2FtcGxlcyAqIHBlcmNlbnRhZ2UgLyAxMDApOwogICAgICAgICB2
YXIgdmFsdWVzID0gdGhpcy5fbWF4SGVhcC52YWx1ZXMoc2l6ZSk7CiAgICAgICAgIHJldHVybiB2
YWx1ZXMubGVuZ3RoID8gdmFsdWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhICsg
YjsgfSkgLyB2YWx1ZXMubGVuZ3RoIDogMDsKICAgICB9LAotICAgIAorCiAgICAgc2NvcmU6IGZ1
bmN0aW9uKHBlcmNlbnRhZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gU3RhdGlzdGljcy5nZW9t
ZXRyaWNNZWFuKFt0aGlzLm1lYW4oKSwgTWF0aC5tYXgodGhpcy5jb25jZXJuKHBlcmNlbnRhZ2Up
LCAxKV0pOwogICAgIH0KIH0KIAotZnVuY3Rpb24gU2FtcGxlcihjb3VudCkKK2Z1bmN0aW9uIFNh
bXBsZXIoc2VyaWVzQ291bnQsIGV4cGVjdGVkU2FtcGxlQ291bnQsIHByb2Nlc3NvcikKIHsKLSAg
ICB0aGlzLmV4cGVyaW1lbnRzID0gW107Ci0gICAgd2hpbGUgKGNvdW50LS0pCi0gICAgICAgIHRo
aXMuZXhwZXJpbWVudHMucHVzaChuZXcgRXhwZXJpbWVudCgpKTsKKyAgICB0aGlzLl9wcm9jZXNz
b3IgPSBwcm9jZXNzb3I7CisKICAgICB0aGlzLnNhbXBsZXMgPSBbXTsKLSAgICB0aGlzLnNhbXBs
aW5nVGltZU9mZnNldCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXNDb3VudDsg
KytpKSB7CisgICAgICAgIHZhciBhcnJheSA9IG5ldyBBcnJheShleHBlY3RlZFNhbXBsZUNvdW50
KTsKKyAgICAgICAgYXJyYXkuZmlsbCgwKTsKKyAgICAgICAgdGhpcy5zYW1wbGVzW2ldID0gYXJy
YXk7CisgICAgfQorICAgIHRoaXMuc2FtcGxlQ291bnQgPSAwOworICAgIHRoaXMubWFya3MgPSB7
fTsKIH0KIAogU2FtcGxlci5wcm90b3R5cGUgPQogewotICAgIHN0YXJ0U2FtcGxpbmc6IGZ1bmN0
aW9uKHNhbXBsaW5nVGltZU9mZnNldCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZXhwZXJpbWVudHMu
Zm9yRWFjaChmdW5jdGlvbihleHBlcmltZW50KSB7Ci0gICAgICAgICAgICBleHBlcmltZW50LnN0
YXJ0U2FtcGxpbmcoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgdGhpcy5z
YW1wbGluZ1RpbWVPZmZzZXQgPSBzYW1wbGluZ1RpbWVPZmZzZXQgLyAxMDAwOworICAgIHJlY29y
ZDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEFzc3VtZSB0aGF0IGFyZ3VtZW50cy5sZW5ndGgg
PT0gdGhpcy5zYW1wbGVzLmxlbmd0aAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3Vt
ZW50cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGhpcy5zYW1wbGVzW2ldW3RoaXMuc2Ft
cGxlQ291bnRdID0gYXJndW1lbnRzW2ldOworICAgICAgICB9CisgICAgICAgICsrdGhpcy5zYW1w
bGVDb3VudDsKICAgICB9LAotICAgIAotICAgIHNhbXBsZTogZnVuY3Rpb24odGltZU9mZnNldCwg
dmFsdWVzKQotICAgIHsKLSAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPCB0aGlzLmV4cGVyaW1l
bnRzLmxlbmd0aCkKLSAgICAgICAgICAgIHRocm93ICJOb3QgZW5vdWdoIHNhbXBsZSBwb2ludHMi
OwotCi0gICAgICAgIHRoaXMuZXhwZXJpbWVudHMuZm9yRWFjaChmdW5jdGlvbihleHBlcmltZW50
LCBpbmRleCkgewotICAgICAgICAgICAgZXhwZXJpbWVudC5zYW1wbGUodmFsdWVzW2luZGV4XSk7
Ci0gICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgdGhpcy5zYW1wbGVz
LnB1c2goeyB0aW1lT2Zmc2V0OiB0aW1lT2Zmc2V0IC8gMTAwMCwgdmFsdWVzOiB2YWx1ZXMgfSk7
CisKKyAgICBtYXJrOiBmdW5jdGlvbihjb21tZW50LCBkYXRhKSB7CisgICAgICAgIGRhdGEgPSBk
YXRhIHx8IHt9OworICAgICAgICAvLyBUaGUgbWFyayBleGlzdHMgYWZ0ZXIgdGhlIGxhc3QgcmVj
b3JkZWQgc2FtcGxlCisgICAgICAgIGRhdGEuaW5kZXggPSB0aGlzLnNhbXBsZUNvdW50OworCisg
ICAgICAgIHRoaXMubWFya3NbY29tbWVudF0gPSBkYXRhOwogICAgIH0sCi0gICAgCi0gICAgdG9K
U09OOiBmdW5jdGlvbihzdGF0aXN0aWNzLCBncmFwaCkKKworICAgIHByb2Nlc3M6IGZ1bmN0aW9u
KG9wdGlvbnMpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0cyA9IHt9OwotICAgICAgICAgCi0g
ICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLnNjb3JlXSA9IHRoaXMuZXhwZXJpbWVudHNbMF0u
c2NvcmUoRXhwZXJpbWVudC5kZWZhdWx0cy5DT05DRVJOKTsKLSAgICAgICAgICAgCi0gICAgICAg
IGlmIChzdGF0aXN0aWNzKSB7Ci0gICAgICAgICAgICB0aGlzLmV4cGVyaW1lbnRzLmZvckVhY2go
ZnVuY3Rpb24oZXhwZXJpbWVudCwgaW5kZXgpIHsKLSAgICAgICAgICAgICAgICB2YXIganNvbkV4
cGVyaW1lbnQgPSAhaW5kZXggPyBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuY29tcGxleGl0eSA6
IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFtZVJhdGU7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0c1tqc29uRXhwZXJpbWVudF0gPSB7fTsKLSAgICAgICAgICAgICAgICByZXN1bHRzW2pzb25F
eHBlcmltZW50XVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmF2ZXJhZ2VdID0gZXhwZXJpbWVu
dC5tZWFuKCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c1tqc29uRXhwZXJpbWVudF1bU3RyaW5n
cy5qc29uLm1lYXN1cmVtZW50cy5jb25jZXJuXSA9IGV4cGVyaW1lbnQuY29uY2VybihFeHBlcmlt
ZW50LmRlZmF1bHRzLkNPTkNFUk4pOwotICAgICAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVy
aW1lbnRdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuc3RkZXZdID0gZXhwZXJpbWVudC5zdGFu
ZGFyZERldmlhdGlvbigpOwotICAgICAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVyaW1lbnRd
W1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMucGVyY2VudF0gPSBleHBlcmltZW50LnBlcmNlbnRh
Z2UoKQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChn
cmFwaCkgewotICAgICAgICAgICAgcmVzdWx0c1tTdHJpbmdzLmpzb24uc2FtcGxlc10gPSB7fTsK
LSAgICAgICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLnNhbXBsZXNdW1N0cmluZ3MuanNvbi5n
cmFwaC5wb2ludHNdID0gdGhpcy5zYW1wbGVzOwotICAgICAgICAgICAgcmVzdWx0c1tTdHJpbmdz
Lmpzb24uc2FtcGxlc11bU3RyaW5ncy5qc29uLmdyYXBoLnNhbXBsaW5nVGltZU9mZnNldF0gPSB0
aGlzLnNhbXBsaW5nVGltZU9mZnNldDsKLSAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBp
ZiAob3B0aW9uc1siYWRqdXN0bWVudCJdID09ICJhZGFwdGl2ZSIpCisgICAgICAgICAgICByZXN1
bHRzW1N0cmluZ3MuanNvbi50YXJnZXRGUFNdID0gK29wdGlvbnNbImZyYW1lLXJhdGUiXTsKKwor
ICAgICAgICAvLyBSZW1vdmUgdW51c2VkIGNhcGFjaXR5CisgICAgICAgIHRoaXMuc2FtcGxlcyA9
IHRoaXMuc2FtcGxlcy5tYXAoZnVuY3Rpb24oYXJyYXkpIHsKKyAgICAgICAgICAgIHJldHVybiBh
cnJheS5zbGljZSgwLCB0aGlzLnNhbXBsZUNvdW50KTsKKyAgICAgICAgfSwgdGhpcyk7CisKKyAg
ICAgICAgdGhpcy5fcHJvY2Vzc29yLnByb2Nlc3NTYW1wbGVzKHJlc3VsdHMpOworCiAgICAgICAg
IHJldHVybiByZXN1bHRzOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5qcwppbmRleCA4MWY0NmJlLi5jNTNkNmUxIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanMKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzCkBAIC0y
Niw2ICsyNiw5IEBAIHZhciBTdHJpbmdzID0gewogICAgICAgICBzY29yZTogInNjb3JlIiwKICAg
ICAgICAgc2FtcGxlczogInNhbXBsZXMiLAogCisgICAgICAgIHRhcmdldEZQUzogInRhcmdldEZQ
UyIsCisgICAgICAgIHNhbXBsaW5nVGltZU9mZnNldDogInNhbXBsaW5nVGltZU9mZnNldCIsCisK
ICAgICAgICAgZXhwZXJpbWVudHM6IHsKICAgICAgICAgICAgIGNvbXBsZXhpdHk6ICJjb21wbGV4
aXR5IiwKICAgICAgICAgICAgIGZyYW1lUmF0ZTogImZyYW1lUmF0ZSIKQEAgLTQyLDExICs0NSw2
IEBAIHZhciBTdHJpbmdzID0gewogICAgICAgICAgICAgaXRlcmF0aW9uczogIml0ZXJhdGlvbnNS
ZXN1bHRzIiwKICAgICAgICAgICAgIHN1aXRlczogInN1aXRlc1Jlc3VsdHMiLAogICAgICAgICAg
ICAgdGVzdHM6ICJ0ZXN0c1Jlc3VsdHMiCi0gICAgICAgIH0sCi0KLSAgICAgICAgZ3JhcGg6IHsK
LSAgICAgICAgICAgIHBvaW50czogInBvaW50cyIsCi0gICAgICAgICAgICBzYW1wbGluZ1RpbWVP
ZmZzZXQ6ICJzYW1wbGluZ1RpbWVPZmZzZXQiCiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xl
cy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGlj
bGVzLmpzCmluZGV4IDUwZTY1Y2MuLmU1NmZmZDUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5n
LXBhcnRpY2xlcy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91
bmNpbmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKQEAgLTExMyw1
ICsxMTMsMTAgQEAgQm91bmNpbmdQYXJ0aWNsZXNTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJj
bGFzcyhTdGFnZSwKIAogICAgICAgICB0aGlzLnBhcnRpY2xlcy5zcGxpY2UoLWNvdW50LCBjb3Vu
dCk7CiAgICAgICAgIHJldHVybiB0aGlzLnBhcnRpY2xlcy5sZW5ndGg7CisgICAgfSwKKworICAg
IGNvbXBsZXhpdHk6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnBhcnRp
Y2xlcy5sZW5ndGg7CiAgICAgfQogfSk7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ry
b25zLmpzCmluZGV4IGYxNTgwNGYuLmY3YjBhNjUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52
YXMtZWxlY3Ryb25zLmpzCkBAIC05NSw2ICs5NSwxMSBAQCBDYW52YXNFbGVjdHJvbnNTdGFnZSA9
IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKICAgICAgICAgdGhpcy5fZWxlY3Ryb25z
LmZvckVhY2goZnVuY3Rpb24oZWxlY3Ryb24pIHsKICAgICAgICAgICAgIGVsZWN0cm9uLmFuaW1h
dGUodGltZURlbHRhKTsKICAgICAgICAgfSk7CisgICAgfSwKKworICAgIGNvbXBsZXhpdHk6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lbGVjdHJvbnMubGVuZ3RoOwog
ICAgIH0KIH0pOwogCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVz
dHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwppbmRleCBlODUzOTc2
Li5kODg2ZWVjIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
bWlzYy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9taXNjL3Jlc291cmNlcy9jYW52YXMtc3RhcnMuanMKQEAgLTkxLDYgKzkx
LDExIEBAIENhbnZhc1N0YXJzU3RhZ2UgPSBVdGlsaXRpZXMuY3JlYXRlU3ViY2xhc3MoU3RhZ2Us
CiAgICAgICAgIHRoaXMuX29iamVjdHMuZm9yRWFjaChmdW5jdGlvbihvYmplY3QpIHsKICAgICAg
ICAgICAgIG9iamVjdC5hbmltYXRlKHRpbWVEZWx0YSk7CiAgICAgICAgIH0pOworICAgIH0sCisK
KyAgICBjb21wbGV4aXR5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
b2JqZWN0cy5sZW5ndGg7CiAgICAgfQogfSk7CiAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwppbmRleCA3NGY2NGVjLi40ZmU0YWIy
IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L21haW4uanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy9tYWluLmpzCkBAIC0yNjcsNyArMjY3LDcgQEAgZnVuY3Rpb24gQmVuY2htYXJrKHN0YWdlLCBv
cHRpb25zKQogICAgIHRoaXMuX3JlY29yZEludGVydmFsID0gMjAwOwogICAgIHRoaXMuX2lzU2Ft
cGxpbmcgPSBmYWxzZTsKICAgICB0aGlzLl9jb250cm9sbGVyID0gbmV3IFBJRENvbnRyb2xsZXIo
dGhpcy5fb3B0aW9uc1siZnJhbWUtcmF0ZSJdKTsKLSAgICB0aGlzLl9zYW1wbGVyID0gbmV3IFNh
bXBsZXIoMik7CisgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDQsIDYwICogdGhpcy5f
b3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdLCB0aGlzKTsKICAgICB0aGlzLl9zdGF0ZSA9IG5ldyBC
ZW5jaG1hcmtTdGF0ZSh0aGlzLl9vcHRpb25zWyJ0ZXN0LWludGVydmFsIl0gKiAxMDAwKTsKIH0K
IApAQCAtMzA2LDcgKzMwNiw5IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHN0YWdlID09IEJlbmNobWFya1N0YXRlLnN0YWdlcy5TQU1QTElORyAmJiAh
dGhpcy5faXNTYW1wbGluZykgewotICAgICAgICAgICAgdGhpcy5fc2FtcGxlci5zdGFydFNhbXBs
aW5nKHRoaXMuX3N0YXRlLnNhbXBsaW5nVGltZU9mZnNldCgpKTsKKyAgICAgICAgICAgIHRoaXMu
X3NhbXBsZXIubWFyayhTdHJpbmdzLmpzb24uc2FtcGxpbmdUaW1lT2Zmc2V0LCB7CisgICAgICAg
ICAgICAgICAgdGltZTogdGhpcy5fc3RhdGUuc2FtcGxpbmdUaW1lT2Zmc2V0KCkgLyAxMDAwCisg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuX2lzU2FtcGxpbmcgPSB0cnVlOwogICAg
ICAgICB9CiAKQEAgLTMyNCwyMyArMzI2LDIzIEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAg
ICAgICAgICAgdHVuZVZhbHVlID0gdHVuZVZhbHVlID4gMCA/IE1hdGguZmxvb3IodHVuZVZhbHVl
KSA6IE1hdGguY2VpbCh0dW5lVmFsdWUpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGN1cnJl
bnRDb21wbGV4aXR5ID0gdGhpcy5fc3RhZ2UudHVuZSh0dW5lVmFsdWUpOwotICAgICAgICB0aGlz
LnJlY29yZChjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFt
ZVJhdGUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgcmVjb3JkOiBmdW5j
dGlvbihjdXJyZW50VGltZU9mZnNldCwgY3VycmVudENvbXBsZXhpdHksIGN1cnJlbnRGcmFtZVJh
dGUpCi0gICAgewotICAgICAgICB0aGlzLl9zYW1wbGVyLnNhbXBsZShjdXJyZW50VGltZU9mZnNl
dCwgW2N1cnJlbnRDb21wbGV4aXR5LCBjdXJyZW50RnJhbWVSYXRlXSk7CisgICAgICAgIHRoaXMu
X3N0YWdlLnR1bmUodHVuZVZhbHVlKTsKIAogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3JlY29y
ZFRpbWVPZmZzZXQgPT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRUaW1l
T2Zmc2V0ID0gY3VycmVudFRpbWVPZmZzZXQ7CiAKICAgICAgICAgdmFyIHN0YWdlID0gdGhpcy5f
c3RhdGUuY3VycmVudFN0YWdlKCk7CiAgICAgICAgIGlmIChzdGFnZSAhPSBCZW5jaG1hcmtTdGF0
ZS5zdGFnZXMuRklOSVNIRUQgJiYgY3VycmVudFRpbWVPZmZzZXQgPCB0aGlzLl9yZWNvcmRUaW1l
T2Zmc2V0ICsgdGhpcy5fcmVjb3JkSW50ZXJ2YWwpCi0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9yZWNvcmRUaW1lT2Zmc2V0ID0g
Y3VycmVudFRpbWVPZmZzZXQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBy
ZWNvcmQ6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCBlc3RpbWF0ZWRGcmFtZVJhdGUsIGlu
dGVydmFsRnJhbWVSYXRlKQorICAgIHsKKyAgICAgICAgLy8gSWYgdGhlIGZyYW1lIHJhdGUgaXMg
LTEgaXQgbWVhbnMgd2UgYXJlIHN0aWxsIHJlY29yZGluZyBmb3IgdGhpcyBzYW1wbGUKKyAgICAg
ICAgdGhpcy5fc2FtcGxlci5yZWNvcmQoY3VycmVudFRpbWVPZmZzZXQsIHRoaXMuc3RhZ2UuY29t
cGxleGl0eSgpLCBlc3RpbWF0ZWRGcmFtZVJhdGUsIGludGVydmFsRnJhbWVSYXRlKTsKICAgICB9
LAogCiAgICAgcnVuOiBmdW5jdGlvbigpCkBAIC0zNTcsNSArMzU5LDU3IEBAIEJlbmNobWFyay5w
cm90b3R5cGUgPQogCiAgICAgICAgIHJlc29sdmVXaGVuRmluaXNoZWQoKTsKICAgICAgICAgcmV0
dXJuIHByb21pc2U7CisgICAgfSwKKworICAgIHByb2Nlc3NTYW1wbGVzOiBmdW5jdGlvbihyZXN1
bHRzKQorICAgIHsKKyAgICAgICAgdmFyIGNvbXBsZXhpdHkgPSBuZXcgRXhwZXJpbWVudDsKKyAg
ICAgICAgdmFyIHNtb290aGVkRlBTID0gbmV3IEV4cGVyaW1lbnQ7CisgICAgICAgIHZhciBzYW1w
bGluZ0luZGV4ID0gMDsKKworICAgICAgICB2YXIgc2FtcGxpbmdNYXJrID0gdGhpcy5fc2FtcGxl
ci5tYXJrc1tTdHJpbmdzLmpzb24uc2FtcGxpbmdUaW1lT2Zmc2V0XTsKKyAgICAgICAgaWYgKHNh
bXBsaW5nTWFyaykgeworICAgICAgICAgICAgc2FtcGxpbmdJbmRleCA9IHNhbXBsaW5nTWFyay5p
bmRleDsKKyAgICAgICAgICAgIHJlc3VsdHNbU3RyaW5ncy5qc29uLnNhbXBsaW5nVGltZU9mZnNl
dF0gPSBzYW1wbGluZ01hcmsudGltZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdHNbU3Ry
aW5ncy5qc29uLnNhbXBsZXNdID0gdGhpcy5fc2FtcGxlci5zYW1wbGVzWzBdLm1hcChmdW5jdGlv
bihkLCBpKSB7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIC8v
IHRpbWUgb2Zmc2V0cyByZXByZXNlbnRlZCBhcyBzZWNvbmRzCisgICAgICAgICAgICAgICAgdGlt
ZTogZC8xMDAwLAorICAgICAgICAgICAgICAgIGNvbXBsZXhpdHk6IHRoaXMuX3NhbXBsZXIuc2Ft
cGxlc1sxXVtpXQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLy8gdGltZSBvZmZzZXRz
IHJlcHJlc2VudGVkIGFzIEZQUworICAgICAgICAgICAgaWYgKGkgPT0gMCkKKyAgICAgICAgICAg
ICAgICByZXN1bHQuZnBzID0gNjA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cmVzdWx0LmZwcyA9IDEwMDAgLyAoZCAtIHRoaXMuX3NhbXBsZXIuc2FtcGxlc1swXVtpIC0gMV0p
OworCisgICAgICAgICAgICB2YXIgc21vb3RoZWRGUFNyZXN1bHQgPSB0aGlzLl9zYW1wbGVyLnNh
bXBsZXNbMl1baV07CisgICAgICAgICAgICBpZiAoc21vb3RoZWRGUFNyZXN1bHQgIT0gLTEpIHsK
KyAgICAgICAgICAgICAgICByZXN1bHQuc21vb3RoZWRGUFMgPSBzbW9vdGhlZEZQU3Jlc3VsdDsK
KyAgICAgICAgICAgICAgICByZXN1bHQuaW50ZXJ2YWxGUFMgPSB0aGlzLl9zYW1wbGVyLnNhbXBs
ZXNbM11baV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpID49IHNhbXBsaW5n
SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV4aXR5LnNhbXBsZShyZXN1bHQuY29tcGxl
eGl0eSk7CisgICAgICAgICAgICAgICAgaWYgKHNtb290aGVkRlBTcmVzdWx0ICE9IC0xKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHNtb290aGVkRlBTLnNhbXBsZShzbW9vdGhlZEZQU3Jlc3VsdCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9LCB0aGlzKTsKKworICAgICAgICByZXN1bHRzW1N0cmluZ3MuanNv
bi5zY29yZV0gPSBjb21wbGV4aXR5LnNjb3JlKEV4cGVyaW1lbnQuZGVmYXVsdHMuQ09OQ0VSTik7
CisgICAgICAgIFtjb21wbGV4aXR5LCBzbW9vdGhlZEZQU10uZm9yRWFjaChmdW5jdGlvbihleHBl
cmltZW50LCBpbmRleCkgeworICAgICAgICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gIWluZGV4
ID8gU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHkgOiBTdHJpbmdzLmpzb24uZXhw
ZXJpbWVudHMuZnJhbWVSYXRlOworICAgICAgICAgICAgcmVzdWx0c1tqc29uRXhwZXJpbWVudF0g
PSB7fTsKKyAgICAgICAgICAgIHJlc3VsdHNbanNvbkV4cGVyaW1lbnRdW1N0cmluZ3MuanNvbi5t
ZWFzdXJlbWVudHMuYXZlcmFnZV0gPSBleHBlcmltZW50Lm1lYW4oKTsKKyAgICAgICAgICAgIHJl
c3VsdHNbanNvbkV4cGVyaW1lbnRdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuY29uY2Vybl0g
PSBleHBlcmltZW50LmNvbmNlcm4oRXhwZXJpbWVudC5kZWZhdWx0cy5DT05DRVJOKTsKKyAgICAg
ICAgICAgIHJlc3VsdHNbanNvbkV4cGVyaW1lbnRdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMu
c3RkZXZdID0gZXhwZXJpbWVudC5zdGFuZGFyZERldmlhdGlvbigpOworICAgICAgICAgICAgcmVz
dWx0c1tqc29uRXhwZXJpbWVudF1bU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5wZXJjZW50XSA9
IGV4cGVyaW1lbnQucGVyY2VudGFnZSgpOworICAgICAgICB9KTsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xh
eWVyaW5nLXRleHQuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9y
ZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwppbmRleCAxMzhiMDQ2Li4yN2QwMTQxIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4dC9yZXNvdXJjZXMvbGF5
ZXJpbmctdGV4dC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGV4
dC9yZXNvdXJjZXMvbGF5ZXJpbmctdGV4dC5qcwpAQCAtMTEzLDYgKzExMywxMSBAQCBMYXllcmlu
Z1RleHRTdGFnZSA9IFV0aWxpdGllcy5jcmVhdGVTdWJjbGFzcyhTdGFnZSwKICAgICAgICAgICAg
IHRoaXMuX3BvcFRleHRFbGVtZW50KCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFbGVt
ZW50cy5sZW5ndGg7CisgICAgfSwKKworICAgIGNvbXBsZXhpdHk6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWxlbWVudHMubGVuZ3RoOwogICAgIH0KIH0pOwog
CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDljOGY1ZGQuLjdiOWE4MmUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTggQEAKKzIwMTYtMDEtMDMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisg
ICAgICAgIFVwZGF0ZSBkYXRhIHJlcG9ydGluZyBhbmQgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjY3MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF2b2lkIHByb2Nlc3NpbmcgdGhlIGRh
dGEgdGhyb3VnaCB0aGUgRXhwZXJpbWVudCB3aGlsZSB0aGUgdGVzdCBpcyBydW5uaW5nLiBSZWNv
bmZpZ3VyZQorICAgICAgICB0aGUgc2FtcGxlciB0byBqdXN0IHJlY29yZCB0aGUgcmF3IHNhbXBs
ZXMuIEFmdGVyIHRoZSB0ZXN0IGlzIGRvbmUsIHJ1biB0aGUgc2FtcGxlcyB0aHJvdWdoCisgICAg
ICAgIHRoZSBFeHBlcmltZW50IHRvIGdldCB0aGUgc2NvcmUuCisKKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9zYW1wbGVyLmpzOgorICAgICAgICAoRXhwZXJpbWVudCk6IEZvbGQgX2lu
aXQoKSBpbnRvIHRoZSBjb25zdHJ1Y3RvciBzaW5jZSBub2JvZHkgZWxzZSB3aWxsIGNhbGwgaXQu
IFRoaXMgaXMgbm90CisgICAgICAgIG5lZWRlZCB1bnRpbCB0aGUgdGVzdCBjb25jbHVkZXMsIHNv
IHJlbW92ZSBzdGFydFNhbXBsaW5nKCkuIENsaWVudHMgc2hvdWxkIGp1c3QgY2FsbCBzYW1wbGUo
KS4KKyAgICAgICAgKFNhbXBsZXIpOiBQcmUtYWxsb2NhdGUgYXJyYXlzIGdpdmVuIHRoZSBudW1i
ZXIgb2YgZGF0YSBwb2ludHMgYmVpbmcgcmVjb3JkZWQsIGFuZCBhIGNhcGFjaXR5CisgICAgICAg
IG9mIGhvdyBtYW55IHNhbXBsZXMgd2lsbCBiZSB1c2VkLiBUaGUgcHJvY2Vzc29yIGlzIGEgY2Fs
bGVkIHdoZW4gaXQncyB0aW1lIHRvIHByb2Nlc3MgdGhlIGRhdGEKKyAgICAgICAgc2luY2UgdGhh
dCBpcyB0aGUgY2xpZW50IGFsc28gdGVsbGluZyB0aGUgU2FtcGxlciB3aGF0IHRvIHJlY29yZC4K
KyAgICAgICAgICAgICAgICBJbnRyb2R1Y2UgdGhlIG5vdGlvbiBvZiBtYXJrcyBhcyB3ZWxsLCB3
aGljaCBhbGxvd3MgdGhlIGNsaWVudCB0byBtYXJrIHdoZW4gYW4KKyAgICAgICAgZXZlbnQgb2Nj
dXJzLiBXaGVuIHdlIG1hcmsgc2FtcGxlIHN0YXJ0LCB3ZSBjYW4gYXR0YWNoIHRoZSB0aW1lc3Rh
bXAgdGhlcmUsIGluc3RlYWQgb2Ygc3RvcmluZworICAgICAgICBpdCBzZXBhcmF0ZWx5LgorICAg
ICAgICAoU2FtcGxlci5wcm90b3R5cGUuc3RhcnRTYW1wbGluZyk6IERlbGV0ZWQuIENsaWVudHMg
c2hvdWxkIGp1c3QgY2FsbCByZWNvcmQoKS4KKyAgICAgICAgKFNhbXBsZXIucHJvdG90eXBlLnJl
Y29yZCk6IFRoZSBkYXRhIHRvIHJlY29yZCBpcyBwYXNzZWQgaW4gYXMgdmFyaWFibGUgYXJndW1l
bnRzLgorICAgICAgICAoU2FtcGxlci5wcm90b3R5cGUubWFyayk6IFdoZW4gYWRkaW5nIGEgbWFy
aywgYSBjbGllbnQgbmVlZHMgdG8gcHJvdmlkZSBhIHVuaXF1ZSBzdHJpbmcsIGFuZAorICAgICAg
ICBjYW4gcHJvdmlkZSBleHRyYSBkYXRhIG9iamVjdCBmb3IgbGF0ZXIgcmV0cmlldmFsLgorICAg
ICAgICAoU2FtcGxlci5wcm90b3R5cGUucHJvY2Vzcyk6IFJlbmFtZWQgZnJvbSB0b0pTT04uIFRy
aW0gdGhlIHNhbXBsaW5nIGFycmF5cyB0byB3aGF0IHdhcyB1c2VkLgorICAgICAgICBDYWxsIHRo
ZSBwcm9jZXNzb3IgdG8gcHJvY2VzcyB0aGUgc2FtcGxlcy4KKyAgICAgICAgKiBBbmltb21ldGVy
L3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYmVuY2htYXJrLXJ1bm5lci5qczoKKyAgICAgICAgKEJl
bmNobWFya1J1bm5lci5wcm90b3R5cGUuX3J1bkJlbmNobWFya0FuZFJlY29yZFJlc3VsdHMpOiBD
YWxsIHByb2Nlc3MoKS4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3Mu
anM6IEFkZCBzb21lIG5ldyBzdHJpbmdzLCByZW1vdmUgdGhlIGdyYXBoIG9uZXMgc2luY2UgdGhl
eSBhcmUKKyAgICAgICAgbm90IHVzZWQuCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvbWFpbi5qczoKKyAgICAgICAgKEJlbmNobWFyayk6IENyZWF0ZSBhIHNhbXBsZXIgd2l0
aCA0IHNlcmllcy4gVGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyBleHBlY3RlZCBpcyB0aGUK
KyAgICAgICAgbnVtYmVyIG9mIHNlY29uZHMgbXVsdGlwbGllZCBieSA2MCBmcHMuIEJlbmNobWFy
aywgYXMgYSBjbGllbnQgb2YgdGhlIFNhbXBsZXIsIGtub3dzIGFib3V0IGFsbAorICAgICAgICBv
ZiB0aGUgZGF0YSBiZWluZyBhZGRlZCB0byB0aGUgU2FtcGxlci4gSXQgaXMgYWRkZWQgdGhyb3Vn
aCByZWNvcmQoKSwgYW5kIHByb2Nlc3NlZCB0aHJvdWdoCisgICAgICAgIHByb2Nlc3NTYW1wbGVz
KCkuCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IE1hcmsgd2hlbiB3ZSd2
ZSBwYXNzZWQgd2FybXVwIGFuZCBhcmUgc3RhcnRpbmcgdG8gc2FtcGxlLiBJbmNsdWRlCisgICAg
ICAgIHRoZSB0aW1lc3RhbXAgaW4gdGhlIGN1c3RvbSBkYXRhIGZvciB0aGUgbWFyay4gVGhpcyBh
dm9pZHMgdGhlIG5lZWQgdG8gc3RvcmUgaXMgc2VwYXJhdGVseSBpbgorICAgICAgICB0aGUgU2Ft
cGxlci4gRm9sZCB3aGF0IHdhcyBpbiByZWNvcmQoKSBoZXJlLCBzaW5jZSBub3RoaW5nIGVsc2Ug
bmVlZHMgdGhpcyBmdW5jdGlvbmFsaXR5LgorICAgICAgICByZWNvcmQoKSBub3cganVzdCByZWxh
eXMgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBzYW1wbGVyLgorICAgICAgICAoQmVuY2htYXJrLnBy
b3RvdHlwZS5yZWNvcmQpOiBDYWxsZWQgYnkgQW5pbWF0b3IsIHdoaWNoIHByb3ZpZGVzIHRoZSBk
YXRhIHRvIHRoZSBzYW1wbGVyLgorICAgICAgICBBbmltYXRvcidzIGNhbGxzIHRvIHRoaXMgaXMg
cGFydCBvZiBhIGxhdGVyIHBhdGNoLiBSZXF1aXJlcyBlYWNoIHN0YWdlIHRvIHJldHVybiBpdHMg
Y29tcGxleGl0eS4KKyAgICAgICAgKEJlbmNobWFyay5wcm90b3R5cGUucHJvY2Vzc1NhbXBsZXMp
OiBJZiB0aGUgc2FtcGxpbmcgbWFyayBleGlzdHMsIGFkZCBpdCB0byB0aGUgcmVzdWx0cy4KKyAg
ICAgICAgICAgICAgICBHbyB0aHJvdWdoIGFsbCBvZiB0aGUgc2FtcGxlcy4gQWxsIHNhbXBsZXMg
Y29udGFpbiBhIHRpbWVzdGFtcCBhbmQgY29tcGxleGl0eS4gV2UKKyAgICAgICAgY2FsY3VsYXRl
ICJyYXcgRlBTIiB3aGljaCBpcyB0aGUgdGltZSBkaWZmZXJlbnRpYWwgZnJvbSB0aGUgcHJldmlv
dXMgc2FtcGxlLiBBdCByZWd1bGFyIGludGVydmFscworICAgICAgICB0aGUgS2FsbWFuLWZpbHRl
cmVkIEZQUyBhbmQgdGhlIGludGVydmFsIGF2ZXJhZ2UgRlBTIGFyZSBhbHNvIHJlY29yZGVkLiBX
ZSBhbHNvIGNyZWF0ZSB0d28KKyAgICAgICAgZXhwZXJpbWVudHMsIHRvIGdldCB0aGUgc2NvcmVz
IGZvciB0aGUgY29tcGxleGl0eSBhbmQgc21vb3RoZWQgRlBTLCBhbmQgYWRkIHRob3NlIHNhbXBs
ZXMgdG8KKyAgICAgICAgdGhlIGV4cGVyaW1lbnRzLiBHcmFiIHRob3NlIHNjb3JlcyBhbmQgYWRk
IHRoZW0gaW50byByZXN1bHRzIGFsc28uCisKKyAgICAgICAgQWRkIGNvbXBsZXhpdHkoKSB0byB0
aGUgdGVzdHMgZm9yIEJlbmNobWFyay5yZWNvcmQoKS4KKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVzLmpzOgor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9u
cy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NhbnZhcy1z
dGFycy5qczoKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RleHQvcmVzb3VyY2VzL2xheWVy
aW5nLXRleHQuanM6CisKIDIwMTUtMTItMjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgog
CiAgICAgICAgIFNpbXBsaWZ5IHRoZSB0ZXN0IGhhcm5lc3MKLS0gCjIuNS40IChBcHBsZSBHaXQt
NjEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268167</attachid>
            <date>2016-01-03 18:10:51 -0800</date>
            <delta_ts>2016-01-03 18:10:51 -0800</delta_ts>
            <desc>2. Refactor how Animator does its recording.</desc>
            <filename>0002-Update-data-reporting-and-analysis.patch</filename>
            <type>text/plain</type>
            <size>15337</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSAxMzc1NjYxOTVkMzk3M2U1OWMwYWUwOThkNjdkY2JmYmZmYzE2ZWE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDMgSmFuIDIwMTYgMTc6MzA6MDQgLTA4MDAKU3ViamVjdDogW1BBVENIIDIvNF0gVXBkYXRlIGRh
dGEgcmVwb3J0aW5nIGFuZCBhbmFseXNpcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjY3MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpSZWZhY3RvciBo
b3cgQW5pbWF0b3IgZG9lcyBpdHMgcmVjb3JkaW5nLgoKKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291
cmNlcy9tYXRoLmpzOiBDcmVhdGUgYSBuZXcsIHNpbXBsZSBlc3RpbWF0b3IgdGhhdCBqdXN0IHJl
dHVybnMKdGhlIHNhbWUgaW50ZXJ2YWwgZnJhbWUgcmF0ZSBmb3IgYWRqdXN0bWVudC4KKiBBbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzOgooQW5pbWF0b3IpOiBSZW1vdmUgX2Ryb3BG
cmFtZUNvdW50LCBhbmQgbWFrZSB2YXJpYWJsZXMgbW9yZSBhY2N1cmF0ZSBkZXNjcmliZWQuCihB
bmltYXRvci5wcm90b3R5cGUuaW5pdGlhbGl6ZSk6IFVzZSB0aGUgaWRlbnRpdHkgZXN0aW1hdG9y
IGluc3RlYWQgb2YgdXNpbmcgYSBib29sLgooQW5pbWF0b3IucHJvdG90eXBlLl9pbnRlcnZhbFRp
bWVEZWx0YSk6IFJlbmFtZSwgb25seSB1c2VkIGludGVybmFsbHkuCihBbmltYXRvci5wcm90b3R5
cGUuX3Nob3VsZFJlcXVlc3RBbm90aGVyRnJhbWUpOiBBc3N1bWUgd2UgZHJvcCBvbmUgZnJhbWUg
Zm9yIGFkanVzdG1lbnQKb2YgdGhlIHNjZW5lLiBJZiB3ZSBhcmUgd2l0aGluIHRoZSBudW1iZXIg
b2YgZnJhbWVzIHRvIG1lYXN1cmUgZm9yIHRoZSBpbnRlcnZhbCwganVzdApyZWNvcmQgdGhlIHRp
bWVzdGFtcC4gT3RoZXJ3aXNlIHdlIGFyZSByZWFkeSB0byBldmFsdWF0ZSBhbmQgYWRqdXN0IHRo
ZSBzY2VuZS4gUmVjb3JkCnRoZSBpbnRlcnZhbCBmcmFtZSByYXRlIGFuZCB0aGUgZXN0aW1hdG9y
J3MgZnJhbWUgcmF0ZS4KLS0tCiAuLi4vQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5q
cyAgICAgICAgICAgICB8IDYzICsrKysrKysrKysrLS0tLS0tLS0tLS0KIC4uLi9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzICAgICAgICAgICAgIHwgNTcgKysrKysrKysrKystLS0t
LS0tLS0KIFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
IHwgMjAgKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCA1NCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVz
b3VyY2VzL21haW4uanMKaW5kZXggNGZlNGFiMi4uOTgzN2M1NyAxMDA2NDQKLS0tIGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwpAQCAtMTgwLDEy
ICsxODAsMTAgQEAgU3RhZ2UucHJvdG90eXBlID0KIAogZnVuY3Rpb24gQW5pbWF0b3IoKQogewot
ICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwotICAgIHRoaXMuX2Ryb3BGcmFtZUNvdW50ID0gMTsK
LSAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7CisgICAgdGhpcy5faW50ZXJ2YWxGcmFt
ZUNvdW50ID0gMDsKKyAgICB0aGlzLl9udW1iZXJPZkZyYW1lc1RvTWVhc3VyZVBlckludGVydmFs
ID0gMzsKICAgICB0aGlzLl9yZWZlcmVuY2VUaW1lID0gMDsKICAgICB0aGlzLl9jdXJyZW50VGlt
ZU9mZnNldCA9IDA7Ci0gICAgdGhpcy5fZXN0aW1hdG9yID0gbmV3IEthbG1hbkVzdGltYXRvcig2
MCk7CiB9CiAKIEFuaW1hdG9yLnByb3RvdHlwZSA9CkBAIC0xOTMsNyArMTkxLDEyIEBAIEFuaW1h
dG9yLnByb3RvdHlwZSA9CiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYmVuY2htYXJrKQogICAg
IHsKICAgICAgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOwotICAgICAgICB0aGlzLl9l
c3RpbWF0ZUZyYW1lUmF0ZSA9IGJlbmNobWFyay5vcHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0
ZSJdOworCisgICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9uLWZs
dWN0dWF0aW5nIGZyYW1lIHJhdGUuCisgICAgICAgIGlmIChiZW5jaG1hcmsub3B0aW9uc1siZXN0
aW1hdGVkLWZyYW1lLXJhdGUiXSkKKyAgICAgICAgICAgIHRoaXMuX2VzdGltYXRvciA9IG5ldyBL
YWxtYW5Fc3RpbWF0b3IoNjApOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLl9lc3Rp
bWF0b3IgPSBuZXcgSWRlbnRpdHlFc3RpbWF0b3I7CiAgICAgfSwKIAogICAgIGdldCBiZW5jaG1h
cmsoKQpAQCAtMjAxLDU1ICsyMDQsNTUgQEAgQW5pbWF0b3IucHJvdG90eXBlID0KICAgICAgICAg
cmV0dXJuIHRoaXMuX2JlbmNobWFyazsKICAgICB9LAogCi0gICAgdGltZURlbHRhOiBmdW5jdGlv
bigpCisgICAgX2ludGVydmFsVGltZURlbHRhOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CiAg
ICAgfSwKIAogICAgIF9zaG91bGRSZXF1ZXN0QW5vdGhlckZyYW1lOiBmdW5jdGlvbigpCiAgICAg
eworICAgICAgICAvLyBDYWRlbmNlIGlzIG51bWJlciBvZiBmcmFtZXMgdG8gbWVhc3VyZSwgdGhl
biBvbmUgbW9yZSBmcmFtZSB0byBhZGp1c3QgdGhlIHNjZW5lLCBhbmQgZHJvcAogICAgICAgICB2
YXIgY3VycmVudFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKLSAgICAgICAgCisKICAgICAgICAg
aWYgKCF0aGlzLl9yZWZlcmVuY2VUaW1lKQogICAgICAgICAgICAgdGhpcy5fcmVmZXJlbmNlVGlt
ZSA9IGN1cnJlbnRUaW1lOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9jdXJyZW50
VGltZU9mZnNldCA9IGN1cnJlbnRUaW1lIC0gdGhpcy5fcmVmZXJlbmNlVGltZTsKIAotICAgICAg
ICBpZiAoIXRoaXMuX2ZyYW1lQ291bnQpCi0gICAgICAgICAgICB0aGlzLl9zdGFydFRpbWVPZmZz
ZXQgPSB0aGlzLl9jdXJyZW50VGltZU9mZnNldDsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVP
ZmZzZXQgPSBjdXJyZW50VGltZSAtIHRoaXMuX3JlZmVyZW5jZVRpbWU7CiAKLSAgICAgICAgKyt0
aGlzLl9mcmFtZUNvdW50OworICAgICAgICBpZiAoIXRoaXMuX2ludGVydmFsRnJhbWVDb3VudCkK
KyAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZU9mZnNldCA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zm
c2V0OwogCi0gICAgICAgIC8vIFN0YXJ0IG1lYXN1cmluZyBhZnRlciBkcm9wcGluZyBfZHJvcEZy
YW1lQ291bnQgZnJhbWVzLgotICAgICAgICBpZiAodGhpcy5fZnJhbWVDb3VudCA9PSB0aGlzLl9k
cm9wRnJhbWVDb3VudCkKLSAgICAgICAgICAgIHRoaXMuX21lYXN1cmVUaW1lT2Zmc2V0ID0gdGhp
cy5fY3VycmVudFRpbWVPZmZzZXQ7CisgICAgICAgIC8vIFN0YXJ0IHRoZSB3b3JrIGZvciB0aGUg
bmV4dCBmcmFtZS4KKyAgICAgICAgKyt0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQ7CiAKICAgICAg
ICAgLy8gRHJvcCBfZHJvcEZyYW1lQ291bnQgZnJhbWVzIGFuZCBtZWFzdXJlIHRoZSBhdmVyYWdl
IG9mIF9tZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMuCi0gICAgICAgIGlmICh0aGlzLl9mcmFtZUNv
dW50IDwgdGhpcy5fZHJvcEZyYW1lQ291bnQgKyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkKKyAg
ICAgICAgaWYgKHRoaXMuX2ludGVydmFsRnJhbWVDb3VudCA8PSB0aGlzLl9udW1iZXJPZkZyYW1l
c1RvTWVhc3VyZVBlckludGVydmFsKSB7CisgICAgICAgICAgICB0aGlzLl9iZW5jaG1hcmsucmVj
b3JkKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCAtMSwgLTEpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KIAotICAgICAgICAvLyBHZXQgdGhlIGF2ZXJhZ2UgRlBTIG9mIF9t
ZWFzdXJlRnJhbWVDb3VudCBmcmFtZXMgb3ZlciBtZWFzdXJlVGltZURlbHRhLgotICAgICAgICB2
YXIgbWVhc3VyZVRpbWVEZWx0YSA9IHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0IC0gdGhpcy5fbWVh
c3VyZVRpbWVPZmZzZXQ7Ci0gICAgICAgIHZhciBjdXJyZW50RnJhbWVSYXRlID0gTWF0aC5mbG9v
cigxMDAwIC8gKG1lYXN1cmVUaW1lRGVsdGEgLyB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCkpOwot
Ci0gICAgICAgIC8vIFVzZSBLYWxtYW4gZmlsdGVyIHRvIGdldCBhIG1vcmUgbm9uLWZsdWN0dWF0
aW5nIGZyYW1lIHJhdGUuCi0gICAgICAgIGlmICh0aGlzLl9lc3RpbWF0ZUZyYW1lUmF0ZSkKLSAg
ICAgICAgICAgIGN1cnJlbnRGcmFtZVJhdGUgPSB0aGlzLl9lc3RpbWF0b3IuZXN0aW1hdGUoY3Vy
cmVudEZyYW1lUmF0ZSk7CisgICAgICAgIC8vIEdldCB0aGUgYXZlcmFnZSBGUFMgb2YgX21lYXN1
cmVGcmFtZUNvdW50IGZyYW1lcyBvdmVyIGludGVydmFsVGltZURlbHRhLgorICAgICAgICB2YXIg
aW50ZXJ2YWxUaW1lRGVsdGEgPSB0aGlzLl9pbnRlcnZhbFRpbWVEZWx0YSgpOworICAgICAgICB2
YXIgaW50ZXJ2YWxGcmFtZVJhdGUgPSAxMDAwIC8gKGludGVydmFsVGltZURlbHRhIC8gdGhpcy5f
bnVtYmVyT2ZGcmFtZXNUb01lYXN1cmVQZXJJbnRlcnZhbCk7CisgICAgICAgIHZhciBlc3RpbWF0
ZWRJbnRlcnZhbEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShpbnRlcnZhbEZy
YW1lUmF0ZSk7CisgICAgICAgIC8vIFJlY29yZCB0aGUgY29tcGxleGl0eSBvZiB0aGUgZnJhbWUg
d2UganVzdCByZW5kZXJlZC4gVGhlIG5leHQgZnJhbWUncyB0aW1lIHJlc3ByZXNlbnRzIHRoZSBh
ZGp1c3RlZAorICAgICAgICAvLyBjb21wbGV4aXR5CisgICAgICAgIHRoaXMuX2JlbmNobWFyay5y
ZWNvcmQodGhpcy5fY3VycmVudFRpbWVPZmZzZXQsIGVzdGltYXRlZEludGVydmFsRnJhbWVSYXRl
LCBpbnRlcnZhbEZyYW1lUmF0ZSk7CiAKICAgICAgICAgLy8gQWRqdXN0IHRoZSB0ZXN0IHRvIHJl
YWNoIHRoZSBkZXNpcmVkIEZQUy4KLSAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2JlbmNobWFy
ay51cGRhdGUodGhpcy5fY3VycmVudFRpbWVPZmZzZXQsIHRoaXMudGltZURlbHRhKCksIGN1cnJl
bnRGcmFtZVJhdGUpOworICAgICAgICB2YXIgc2hvdWxkQ29udGludWVSdW5uaW5nID0gdGhpcy5f
YmVuY2htYXJrLnVwZGF0ZSh0aGlzLl9jdXJyZW50VGltZU9mZnNldCwgaW50ZXJ2YWxUaW1lRGVs
dGEsIGVzdGltYXRlZEludGVydmFsRnJhbWVSYXRlKTsKIAogICAgICAgICAvLyBTdGFydCB0aGUg
bmV4dCBkcm9wL21lYXN1cmUgY3ljbGUuCi0gICAgICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwor
ICAgICAgICB0aGlzLl9pbnRlcnZhbEZyYW1lQ291bnQgPSAwOwogCi0gICAgICAgIC8vIElmIHJl
c3VsdCA9PSAwLCBubyBtb3JlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIHdpbGwgYmUgaW52b2tl
ZC4KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgLy8gSWYgcmVzdWx0IGlzIGZhbHNl
LCBubyBtb3JlIHJlcXVlc3RBbmltYXRpb25GcmFtZSgpIHdpbGwgYmUgaW52b2tlZC4KKyAgICAg
ICAgcmV0dXJuIHNob3VsZENvbnRpbnVlUnVubmluZzsKICAgICB9LAogCiAgICAgYW5pbWF0ZUxv
b3A6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zaG91bGRSZXF1ZXN0QW5v
dGhlckZyYW1lKCkpIHsKLSAgICAgICAgICAgIHRoaXMuX2JlbmNobWFyay5zdGFnZS5hbmltYXRl
KHRoaXMudGltZURlbHRhKCkpOworICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJrLnN0YWdlLmFu
aW1hdGUodGhpcy5faW50ZXJ2YWxUaW1lRGVsdGEoKSk7CiAgICAgICAgICAgICByZXF1ZXN0QW5p
bWF0aW9uRnJhbWUodGhpcy5hbmltYXRlTG9vcC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI5NSw3ICsyOTgsNyBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0KICAgICB9LAogCiAg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGFuaW1hdG9yIHRvIGFkanVzdCB0aGUgY29tcGxleGl0eSBv
ZiB0aGUgdGVzdC4KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKGN1cnJlbnRUaW1lT2Zmc2V0LCB0aW1l
RGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpCisgICAgdXBkYXRlOiBmdW5jdGlvbihjdXJyZW50VGlt
ZU9mZnNldCwgaW50ZXJ2YWxUaW1lRGVsdGEsIGVzdGltYXRlZEludGVydmFsRnJhbWVSYXRlKQog
ICAgIHsKICAgICAgICAgdGhpcy5fc3RhdGUudXBkYXRlKGN1cnJlbnRUaW1lT2Zmc2V0KTsKIApA
QCAtMzIyLDcgKzMyNSw3IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICBlbHNlIGlm
ICghKHRoaXMuX2lzU2FtcGxpbmcgJiYgdGhpcy5fb3B0aW9uc1siYWRqdXN0bWVudCJdID09ICJm
aXhlZC1hZnRlci13YXJtdXAiKSkgewogICAgICAgICAgICAgLy8gVGhlIHJlbGF0aW9uc2hpcCBi
ZXR3ZWVuIGZyYW1lUmF0ZSBhbmQgdGVzdCBjb21wbGV4aXR5IGlzIGludmVyc2UtcHJvcG9ydGlv
bmFsIHNvIHdlCiAgICAgICAgICAgICAvLyBuZWVkIHRvIHVzZSB0aGUgbmVnYXRpdmUgb2YgUElE
Q29udHJvbGxlci50dW5lKCkgdG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0Lgot
ICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50VGlt
ZU9mZnNldCwgdGltZURlbHRhLCBjdXJyZW50RnJhbWVSYXRlKTsKKyAgICAgICAgICAgIHR1bmVW
YWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUoY3VycmVudFRpbWVPZmZzZXQsIGludGVydmFs
VGltZURlbHRhLCBlc3RpbWF0ZWRJbnRlcnZhbEZyYW1lUmF0ZSk7CiAgICAgICAgICAgICB0dW5l
VmFsdWUgPSB0dW5lVmFsdWUgPiAwID8gTWF0aC5mbG9vcih0dW5lVmFsdWUpIDogTWF0aC5jZWls
KHR1bmVWYWx1ZSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCmluZGV4IDE0OTgyZGQuLjY3N2EyMGIgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0
aC5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21h
dGguanMKQEAgLTMwLDcgKzMwLDcgQEAgdmFyIE1hdHJpeCA9CiAgICAgICAgICAgICBvdXQgKz0g
QVtpXTsKICAgICAgICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQogICAgICAgICAgICAgICAgIG91
dCArPSAiLCAiOwotICAgICAgICB9ICAgICAgIAorICAgICAgICB9CiAgICAgICAgIHJldHVybiBv
dXQgKyAiXSI7CiAgICAgfSwKIApAQCAtMTkzLDcgKzE5Myw3IEBAIGZ1bmN0aW9uIFBJRENvbnRy
b2xsZXIoeXNwKQogCiAgICAgdGhpcy5fS3AgPSAwOwogICAgIHRoaXMuX3N0YWdlID0gUElEQ29u
dHJvbGxlci5zdGFnZXMuV0FSTUlORzsKLSAgICAKKwogICAgIHRoaXMuX2VvbGQgPSAwOwogICAg
IHRoaXMuX0kgPSAwOwogfQpAQCAtMjA4LDEyICsyMDgsMTIgQEAgUElEQ29udHJvbGxlci55UG9z
aXRpb25zID0gewogLy8gVGhlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZCBmb3IgaXMgdXNlZCB0
dW5pbmcgdGhlIFBJRCBjb250cm9sbGVyLiBUaGUgd29ya2Zsb3cgb2YKIC8vIHRoZSB0dW5pbmcg
aXMgc3BsaXQgaW50byBmb3VyIHN0YWdlcy4gVGhlIGZpcnN0IHR3byBzdGFnZXMgZGV0ZXJtaW5l
IHRoZSB2YWx1ZXMKIC8vIG9mIHRoZSBQSUQgY29udHJvbGxlciBnYWlucy4gRHVyaW5nIHRoZXNl
IHR3byBzdGFnZXMgd2UgcmV0dXJuIHRoZSBwcm9wb3J0aW9uYWwKLS8vIHRlcm0gb25seS4gVGhl
IHRoaXJkIHN0YWdlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBtaW4tbWF4IHZhbHVlcyBvZiB0
aGUgCisvLyB0ZXJtIG9ubHkuIFRoZSB0aGlyZCBzdGFnZSBpcyB1c2VkIHRvIGRldGVybWluZSB0
aGUgbWluLW1heCB2YWx1ZXMgb2YgdGhlCiAvLyBzYXR1cmF0aW9uIGFjdHVhdG9yLiBJbiB0aGUg
bGFzdCBzdGFnZSBiYWNrLWNhbGN1bGF0aW9uIGFuZCB0cmFja2luZyBhcmUgYXBwbGllZAogLy8g
dG8gYXZvaWQgaW50ZWdyYXRvciB3aW5kdXAuIER1cmluZyB0aGUgbGFzdCB0d28gc3RhZ2VzLCB3
ZSByZXR1cm4gYSBQSUQgY29udHJvbAogLy8gdmFsdWUuCiBQSURDb250cm9sbGVyLnN0YWdlcyA9
IHsKLSAgICBXQVJNSU5HOiAwLCAgICAgICAgIC8vIEluY3JlYXNlIHRoZSB2YWx1ZSBvZiB0aGUg
S3AgdW50aWwgdGhlIHN5c3RlbSBvdXRwdXQgcmVhY2hlcyB5c3AuIAorICAgIFdBUk1JTkc6IDAs
ICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHRoZSBLcCB1bnRpbCB0aGUgc3lzdGVt
IG91dHB1dCByZWFjaGVzIHlzcC4KICAgICBPVkVSU0hPT1Q6IDEsICAgICAgIC8vIE1lYXN1cmUg
dGhlIG9zY2lsbGF0aW9uIHBlcmlvZCBhbmQgdGhlIG92ZXJzaG9vdCB2YWx1ZQogICAgIFVOREVS
U0hPT1Q6IDIsICAgICAgLy8gUmV0dXJuIFBJRCB2YWx1ZSBhbmQgbWVhc3VyZSB0aGUgdW5kZXJz
aG9vdCB2YWx1ZQogICAgIFNBVFVSQVRFOiAzICAgICAgICAgLy8gUmV0dXJuIFBJRCB2YWx1ZSBh
bmQgYXBwbHkgYmFjay1jYWxjdWxhdGlvbiBhbmQgdHJhY2tpbmcuCkBAIC0yMzcsNyArMjM3LDcg
QEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgIC8vIHByb3BvcnRpb25hbCBnYWluIHZl
cnkgc21hbGwgYnV0IGFjaGlldmVzIHRoZSBkZXNpcmVkIHByb2dyZXNzLiBCdXQgaWYgeSBkb2Vz
CiAgICAgLy8gbm90IGNoYW5nZSBzaWduaWZpY2FudGx5IGFmdGVyIGFkZGluZyBmZXcgaXRlbXMs
IHRoYXQgbWVhbnMgd2UgbmVlZCBhIG11Y2gKICAgICAvLyBiaWdnZXIgZ2Fpbi4gU28gd2UgbmVl
ZCB0byBtb3ZlIG92ZXIgYSBjdWJpYyBjdXJ2ZSB3aGljaCBpbmNyZWFzZXMgdmVyeQotICAgIC8v
IHNsb3dseSB3aXRoIHNtYWxsIHQgdmFsdWVzIGJ1dCBtb3ZlcyB2ZXJ5IGZhc3Qgd2l0aCBsYXJn
ZXIgdCB2YWx1ZXMuIAorICAgIC8vIHNsb3dseSB3aXRoIHNtYWxsIHQgdmFsdWVzIGJ1dCBtb3Zl
cyB2ZXJ5IGZhc3Qgd2l0aCBsYXJnZXIgdCB2YWx1ZXMuCiAgICAgLy8gVGhlIGJhc2ljIGZvcm11
bGEgaXM6IHkgPSB0XjMKICAgICAvLyBDaGFuZ2UgdGhlIGZvcm11bGEgdG8gcmVhY2ggeT0xIGFm
dGVyIDEwMDAgbXM6IHkgPSAodC8xMDAwKV4zCiAgICAgLy8gQ2hhbmdlIHRoZSBmb3JtdWxhIHRv
IHJlYWNoIHk9KHlzcCAtIHkwKSBhZnRlciAxMDAwIG1zOiB5ID0gKHlzcCAtIHkwKSAqICh0LzEw
MDApXjMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiAKICAg
ICAvLyBEZWNpZGVzIGhvdyBtdWNoIHRoZSBwcm9wb3J0aW9uYWwgZ2FpbiBzaG91bGQgYmUgaW5j
cmVhc2VkIGR1cmluZyB0aGUgbWFudWFsCiAgICAgLy8gZ2FpbiBzdGFnZS4gV2UgY2hvb3NlIHRv
IHVzZSB0aGUgcmF0aW8gb2YgdGhlIHVsdGltYXRlIGRpc3RhbmNlIHRvIHRoZSBjdXJyZW50Ci0g
ICAgLy8gZGlzdGFuY2UgYXMgYW4gaW5kaWNhdGlvbiBvZiBob3cgbXVjaCB0aGUgc3lzdGVtIGlz
IHJlc3BvbnNpdmUuIFdlIHdhbnQgCisgICAgLy8gZGlzdGFuY2UgYXMgYW4gaW5kaWNhdGlvbiBv
ZiBob3cgbXVjaCB0aGUgc3lzdGVtIGlzIHJlc3BvbnNpdmUuIFdlIHdhbnQKICAgICAvLyB0byBr
ZWVwIHRoZSBpbmNyZW1lbnQgdW5kZXIgY29udHJvbCBzbyBpdCBkb2VzIG5vdCBjYXVzZSB0aGUg
c3lzdGVtIGluc3RhYmlsaXR5CiAgICAgLy8gU28gd2UgY2hvb3NlIHRvIHRha2UgdGhlIG5hdHVy
YWwgbG9nYXJpdGhtIG9mIHRoaXMgcmF0aW8uCiAgICAgX2dhaW5JbmNyZW1lbnQ6IGZ1bmN0aW9u
KHQsIHksIGUpCkBAIC0yNzcsNyArMjc3LDcgQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQog
ICAgICAgICAgICAgaWYgKHlQb3NpdGlvbiA9PSBQSURDb250cm9sbGVyLnlQb3NpdGlvbnMuQUZU
RVJfU0VUUE9JTlQpCiAgICAgICAgICAgICAgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVy
LnN0YWdlcy5PVkVSU0hPT1Q7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICAg
ICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5PVkVSU0hPT1Q6CiAgICAgICAgICAgICBpZiAo
eVBvc2l0aW9uID09IFBJRENvbnRyb2xsZXIueVBvc2l0aW9ucy5CRUZPUkVfU0VUUE9JTlQpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5VTkRFUlNI
T09UOwpAQCAtMzEzLDcgKzMxMyw3IEBAIFBJRENvbnRyb2xsZXIucHJvdG90eXBlID0KICAgICAg
ICAgLy8gVGhlIG91cHV0IGlzIGEgUElEIGZ1bmN0aW9uLgogICAgICAgIHJldHVybiBQICsgdGhp
cy5fSSArIEQ7CiAgICAgfSwKLSAgICAKKwogICAgIC8vIEFwcGx5IGRpZmZlcmVudCBzdHJhdGVn
aWVzIGZvciB0aGUgdHVuaW5nIGJhc2VkIG9uIHRoZSBzdGFnZSBvZiB0aGUgY29udHJvbGxlci4K
ICAgICBfdHVuZTogZnVuY3Rpb24odCwgaCwgeSwgZSkKICAgICB7CkBAIC0zMzIsNyArMzMyLDcg
QEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgICAgICAgICAgICAgIC8vIHNldC1wb2lu
dCB5ZXQKICAgICAgICAgICAgICAgICB0aGlzLl9LcCArPSB0aGlzLl9nYWluSW5jcmVtZW50KHQs
IHksIGUpOwogICAgICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3R1bmVQKGUpOwogCiAgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuT1ZFUlNI
T09UOgpAQCAtMzQzLDQxICszNDMsNDEgQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAg
ICAgICAgICAgICAgIHRoaXMuX3QwID0gdDsKICAgICAgICAgICAgICAgICB0aGlzLl9LcCAvPSAy
OwogICAgICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1
bmVQKGUpOwotICAgIAorCiAgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuVU5ERVJT
SE9PVDoKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgWmllZ2xlcsOiwoBO
aWNob2xzIG1ldGhvZC4gV2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlCiAgICAgICAgICAgICAvLyBp
bnRlZ3JhbCBhbmQgZGVyaXZhdGl2ZSBwZXJpb2RzLgogICAgICAgICAgICAgaWYgKHR5cGVvZiB0
aGlzLl9UaSA9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRp
bWUgb2YgdGhlIGVuZCBvZiB0aGUgZmlyc3Qgb3ZlcnNob3QKICAgICAgICAgICAgICAgICB2YXIg
VHUgPSB0IC0gdGhpcy5fdDA7Ci0gICAgICAgIAorCiAgICAgICAgICAgICAgICAgLy8gQ2FsY3Vs
YXRlIHRoZSBzeXN0ZW0gcGFyYW1ldGVycyBmcm9tIEtwIGFuZCBUdSBhc3N1bWluZwogICAgICAg
ICAgICAgICAgIC8vIGEgInNvbWUgb3ZlcnNob290IiBjb250cm9sIHR5cGUuIFNlZToKICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9aaWVnbGVyJUUyJTgw
JTkzTmljaG9sc19tZXRob2QKICAgICAgICAgICAgICAgICB0aGlzLl9UaSA9IFR1IC8gMjsKICAg
ICAgICAgICAgICAgICB0aGlzLl9UZCA9IFR1IC8gMzsKICAgICAgICAgICAgICAgICB0aGlzLl9L
cCA9IDAuMzMgKiB0aGlzLl9LcDsKLSAgICAgICAgCisKICAgICAgICAgICAgICAgICAvLyBDYWxj
dWxhdGUgdGhlIHRyYWNraW5nIHRpbWUuCiAgICAgICAgICAgICAgICAgdGhpcy5fVHQgPSBNYXRo
LnNxcnQodGhpcy5fVGkgKiB0aGlzLl9UZCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIAorCiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fdHVuZVBJRChoLCB5LCBlKTsKLSAgICAgICAgCisKICAg
ICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5TQVRVUkFURToKICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl90dW5lUElEKGgsIHksIGUpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0sCi0gICAgCisKICAgICAvLyBFbnN1cmVzIHRoZSBzeXN0ZW0g
ZG9lcyBub3QgZmx1Y3R1YXRlcy4KICAgICBfc2F0dXJhdGU6IGZ1bmN0aW9uKHYsIGUpCiAgICAg
ewogICAgICAgICB2YXIgdSA9IHY7Ci0gICAgICAgIAorCiAgICAgICAgIHN3aXRjaCAodGhpcy5f
c3RhZ2UpIHsKICAgICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5PVkVSU0hPT1Q6CiAg
ICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuVU5ERVJTSE9PVDoKQEAgLTM4OSw3ICsz
ODksNyBAQCBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgICAgICAgICAgICAgdGhpcy5f
bWF4ID0gTWF0aC5tYXgodGhpcy5fbWF4LCB0aGlzLl9vdXQpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5z
dGFnZXMuU0FUVVJBVEU6CiAgICAgICAgICAgICBjb25zdCBsaW1pdFBlcmNlbnRhZ2UgPSAwLjkw
OwogICAgICAgICAgICAgdmFyIG1pbiA9IHRoaXMuX21pbiA+IDAgPyBNYXRoLm1pbih0aGlzLl9t
aW4sIHRoaXMuX21heCAqIGxpbWl0UGVyY2VudGFnZSkgOiB0aGlzLl9taW47CkBAIC0zOTksMTMg
KzM5OSwxMyBAQCBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiAgICAgICAgICAgICAvLyBDbGlw
IHRoZSBjb250cm9sbGVyIG91dHB1dCB0byB0aGUgbWluLW1heCB2YWx1ZXMKICAgICAgICAgICAg
IG91dCA9IE1hdGgubWF4KE1hdGgubWluKG1heCwgb3V0KSwgbWluKTsKICAgICAgICAgICAgIHUg
PSBvdXQgLSB0aGlzLl9vdXQ7Ci0gICAgCisKICAgICAgICAgICAgIC8vIEFwcGx5IHRoZSBiYWNr
LWNhbGN1bGF0aW9uIGFuZCB0cmFja2luZwogICAgICAgICAgICAgaWYgKHUgIT0gdikKICAgICAg
ICAgICAgICAgICB1ICs9ICh0aGlzLl9LcCAqIHRoaXMuX1R0IC8gdGhpcy5fVGkpICogZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX291
dCArPSB1OwogICAgICAgICByZXR1cm4gdTsKICAgICB9LApAQCAtNDE1LDE0ICs0MTUsMTQgQEAg
UElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogICAgIHR1bmU6IGZ1bmN0aW9uKHQsIGgsIHkpCiAg
ICAgewogICAgICAgICB0aGlzLl91cGRhdGVTdGFnZSh5KTsKLSAgICAgICAgCisKICAgICAgICAg
Ly8gQ3VycmVudCBlcnJvci4KICAgICAgICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OwogICAgICAg
ICB2YXIgdiA9IHRoaXMuX3R1bmUodCwgaCwgeSwgZSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IFNhdmUgZSBmb3IgdGhlIG5leHQgY2FsbC4KICAgICAgICAgdGhpcy5fZW9sZCA9IGU7Ci0gICAg
ICAgIAorCiAgICAgICAgIC8vIEFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNraW5nIHRv
IGF2b2lkIGludGVncmF0b3Igd2luZHVwCiAgICAgICAgIHJldHVybiB0aGlzLl9zYXR1cmF0ZSh2
LCBlKTsKICAgICB9CkBAIC00ODAsMyArNDgwLDEyIEBAIEthbG1hbkVzdGltYXRvci5wcm90b3R5
cGUgPQogICAgICAgICByZXR1cm4gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwg
IHRoaXMuX3ZlY1hfZXN0KTsKICAgICB9CiB9CisKK2Z1bmN0aW9uIElkZW50aXR5RXN0aW1hdG9y
KCkge30KK0lkZW50aXR5RXN0aW1hdG9yLnByb3RvdHlwZSA9Cit7CisgICAgZXN0aW1hdGU6IGZ1
bmN0aW9uKGN1cnJlbnQpCisgICAgeworICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICB9Cit9
OwpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRl
c3RzL0NoYW5nZUxvZwppbmRleCA3YjlhODJlLi40ZGNmYTYxIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAt
NSw2ICs1LDI2IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAg
ICAgICAgUmVmYWN0b3IgaG93IEFuaW1hdG9yIGRvZXMgaXRzIHJlY29yZGluZy4KKworICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanM6IENyZWF0ZSBhIG5ldywgc2lt
cGxlIGVzdGltYXRvciB0aGF0IGp1c3QgcmV0dXJucworICAgICAgICB0aGUgc2FtZSBpbnRlcnZh
bCBmcmFtZSByYXRlIGZvciBhZGp1c3RtZW50LgorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanM6CisgICAgICAgIChBbmltYXRvcik6IFJlbW92ZSBfZHJvcEZyYW1l
Q291bnQsIGFuZCBtYWtlIHZhcmlhYmxlcyBtb3JlIGFjY3VyYXRlIGRlc2NyaWJlZC4KKyAgICAg
ICAgKEFuaW1hdG9yLnByb3RvdHlwZS5pbml0aWFsaXplKTogVXNlIHRoZSBpZGVudGl0eSBlc3Rp
bWF0b3IgaW5zdGVhZCBvZiB1c2luZyBhIGJvb2wuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5
cGUuX2ludGVydmFsVGltZURlbHRhKTogUmVuYW1lLCBvbmx5IHVzZWQgaW50ZXJuYWxseS4KKyAg
ICAgICAgKEFuaW1hdG9yLnByb3RvdHlwZS5fc2hvdWxkUmVxdWVzdEFub3RoZXJGcmFtZSk6IEFz
c3VtZSB3ZSBkcm9wIG9uZSBmcmFtZSBmb3IgYWRqdXN0bWVudAorICAgICAgICBvZiB0aGUgc2Nl
bmUuIElmIHdlIGFyZSB3aXRoaW4gdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gbWVhc3VyZSBmb3Ig
dGhlIGludGVydmFsLCBqdXN0CisgICAgICAgIHJlY29yZCB0aGUgdGltZXN0YW1wLiBPdGhlcndp
c2Ugd2UgYXJlIHJlYWR5IHRvIGV2YWx1YXRlIGFuZCBhZGp1c3QgdGhlIHNjZW5lLiBSZWNvcmQK
KyAgICAgICAgdGhlIGludGVydmFsIGZyYW1lIHJhdGUgYW5kIHRoZSBlc3RpbWF0b3IncyBmcmFt
ZSByYXRlLgorCisyMDE2LTAxLTAzICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAg
ICAgICBVcGRhdGUgZGF0YSByZXBvcnRpbmcgYW5kIGFuYWx5c2lzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBBdm9pZCBwcm9jZXNzaW5nIHRoZSBkYXRh
IHRocm91Z2ggdGhlIEV4cGVyaW1lbnQgd2hpbGUgdGhlIHRlc3QgaXMgcnVubmluZy4gUmVjb25m
aWd1cmUKICAgICAgICAgdGhlIHNhbXBsZXIgdG8ganVzdCByZWNvcmQgdGhlIHJhdyBzYW1wbGVz
LiBBZnRlciB0aGUgdGVzdCBpcyBkb25lLCBydW4gdGhlIHNhbXBsZXMgdGhyb3VnaAogICAgICAg
ICB0aGUgRXhwZXJpbWVudCB0byBnZXQgdGhlIHNjb3JlLgotLSAKMi41LjQgKEFwcGxlIEdpdC02
MSkKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268168</attachid>
            <date>2016-01-03 18:11:14 -0800</date>
            <delta_ts>2016-01-03 18:11:14 -0800</delta_ts>
            <desc>3. Producing the JSON can take a while with all of the data.</desc>
            <filename>0003-Update-data-reporting-and-analysis.patch</filename>
            <type>text/plain</type>
            <size>6556</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA4MDNjZTUxODEzZDJiN2UxMGJlZjg5NGJjY2M0ZGM4ODQyM2IyMzJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDMgSmFuIDIwMTYgMTc6NDM6MTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDMvNF0gVXBkYXRlIGRh
dGEgcmVwb3J0aW5nIGFuZCBhbmFseXNpcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjY3MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpQcm9kdWNpbmcg
dGhlIEpTT04gY2FuIHRha2UgYSB3aGlsZSB3aXRoIGFsbCBvZiB0aGUgZGF0YS4gTWFrZSBpdCBv
bi1kZW1hbmQgd2l0aCBhCmJ1dHRvbi4KCiogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVu
bmVyL2FuaW1vbWV0ZXIuanM6CihzaG93UmVzdWx0cyk6IFdoZW4gc2hvd2luZyB0aGUgcmVzdWx0
cywgZG9uJ3Qgc2VyaWFsaXplIHRoZSBKU09OIGRhdGEuIE1vdmUgdGhhdCB0by4uLgooc2hvd0pT
T05SZXN1bHRzKTogLi4uaGVyZS4gUmVtb3ZlIHRoZSBidXR0b24uCgoqIEFuaW1vbWV0ZXIvZGV2
ZWxvcGVyLmh0bWw6IEFkZCBhIGJ1dHRvbi4gVGhlIGJ1dHRvbiB3aWxsIHJlbW92ZSBpdHNlbGYg
YW5kIHBvcHVsYXRlCnRoZSB0ZXh0YXJlYSB3aXRoIHRoZSBKU09OIGRhdGEuCiogQW5pbW9tZXRl
ci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgooLmhpZGRlbik6IEFkZCBh
IHVuaXZlcnNhbCBoaWRkZW4gY2xhc3MuCigjcmVzdWx0cyBidXR0b24uc21hbGwtYnV0dG9uKTog
UHJvbW90ZSB0aGUgc21hbGwtYnV0dG9uIHN0eWxlcyB0byB0aGUgd2hvbGUgcmVzdWx0cwpzZWN0
aW9uIGZvciB1c2UgaW4gdGhlIEpTT04gYnV0dG9uLgooI3Jlc3VsdHMgYnV0dG9uLnNtYWxsLWJ1
dHRvbjphY3RpdmUpOgooI3Jlc3VsdHMtZGF0YSBidXR0b24uc21hbGwtYnV0dG9uKTogRGVsZXRl
ZC4KKCNyZXN1bHRzLWRhdGEgYnV0dG9uLnNtYWxsLWJ1dHRvbjphY3RpdmUpOiBEZWxldGVkLgot
LS0KIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbCAgICAgICAgIHwg
IDcgKysrLS0KIC4uLi9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzICAgICAg
ICAgIHwgMzIgKysrKysrKysrKysrLS0tLS0tLS0tLQogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvYW5pbW9tZXRlci5qcyAgICAgICAgICAgfCAxMiArKysrKystLQogUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNCArKysrKysrKysrKysrKysr
CiA0IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbCBiL1Bl
cmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbAppbmRleCA4NmRlMTU0Li5m
NmYzMTUyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVy
Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5odG1sCkBA
IC03OCw4ICs3OCwxMSBAQAogICAgICAgICAgICAgICAgIDx0YWJsZSBpZD0icmVzdWx0cy1oZWFk
ZXIiPjwvdGFibGU+CiAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDxkaXYgaWQ9InJl
c3VsdHMtanNvbiI+Ci0gICAgICAgICAgICAgICAgSlNPTjoKLSAgICAgICAgICAgICAgICA8dGV4
dGFyZWEgcm93cz0xIG9uY2xpY2s9InRoaXMuZm9jdXMoKTt0aGlzLnNlbGVjdCgpIiByZWFkb25s
eT48L3RleHRhcmVhPgorICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNtYWxsLWJ1dHRv
biIgb25jbGljaz0iYmVuY2htYXJrQ29udHJvbGxlci5zaG93SlNPTlJlc3VsdHMoKSI+SlNPTiBy
ZXN1bHRzPC9idXR0b24+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGlkZGVuIj4KKyAg
ICAgICAgICAgICAgICAgICAgSlNPTjoKKyAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHJv
d3M9MSBvbmNsaWNrPSJ0aGlzLmZvY3VzKCk7dGhpcy5zZWxlY3QoKSIgcmVhZG9ubHk+PC90ZXh0
YXJlYT4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDwvZGl2PgogICAgICAg
ICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJiZW5jaG1hcmtDb250cm9sbGVyLnN0YXJ0QmVuY2htYXJr
KCkiPlRlc3QgQWdhaW48L2J1dHRvbj4KICAgICAgICAgICAgIDxwPidzJzogU2VsZWN0IGRpZmZl
cmVudCBkYXRhIGZvciBjb3B5L3Bhc3RlPC9wPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5jc3MgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVy
LmNzcwppbmRleCBiNGY4MmJlLi40NzFkZTU2IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmNzcworKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21l
dGVyLmNzcwpAQCAtMyw2ICszLDEwIEBAIGJvZHkgewogICAgIGNvbG9yOiByZ2IoMjM1LCAyMzUs
IDIzNSk7CiB9CiAKKy5oaWRkZW4geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKIGgxIHsKICAg
ICBtYXJnaW46IDV2aCAwOwogfQpAQCAtMjY2LDYgKzI3MCwyMCBAQCBsYWJlbC50cmVlLWxhYmVs
IHsKICAgICBmb250LXNpemU6IDJlbTsKIH0KIAorI3Jlc3VsdHMgYnV0dG9uLnNtYWxsLWJ1dHRv
biB7CisgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMzUsIDIzNSwgMjM1LCAuOSk7CisgICAg
Y29sb3I6IHJnYmEoMjM1LCAyMzUsIDIzNSwgLjkpOworICAgIGJvcmRlci1yYWRpdXM6IDJweDsK
KyAgICBwYWRkaW5nOiAxcHggNHB4OworICAgIG1hcmdpbjogMCAwIDAgMWVtOworICAgIGZvbnQt
c2l6ZTogOXB4OworfQorCisjcmVzdWx0cyBidXR0b24uc21hbGwtYnV0dG9uOmFjdGl2ZSB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMzUsIDIzNSwgMjM1LCAuMik7CisgICAgY29sb3I6
IGluaGVyaXQ7Cit9CisKIC5zY29yZSB7CiAgICAgZm9udC1zaXplOiAzZW07CiB9CkBAIC0yODcs
MjAgKzMwNSw2IEBAIGxhYmVsLnRyZWUtbGFiZWwgewogICAgIHBhZGRpbmctbGVmdDogLjI1ZW07
CiB9CiAKLSNyZXN1bHRzLWRhdGEgYnV0dG9uLnNtYWxsLWJ1dHRvbiB7Ci0gICAgYm9yZGVyOiAx
cHggc29saWQgcmdiYSgyMzUsIDIzNSwgMjM1LCAuOSk7Ci0gICAgY29sb3I6IHJnYmEoMjM1LCAy
MzUsIDIzNSwgLjkpOwotICAgIGJvcmRlci1yYWRpdXM6IDJweDsKLSAgICBwYWRkaW5nOiAxcHgg
NHB4OwotICAgIG1hcmdpbjogMCAwIDAgMWVtOwotICAgIGZvbnQtc2l6ZTogOXB4OwotfQotCi0j
cmVzdWx0cy1kYXRhIGJ1dHRvbi5zbWFsbC1idXR0b246YWN0aXZlIHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2JhKDIzNSwgMjM1LCAyMzUsIC4yKTsKLSAgICBjb2xvcjogaW5oZXJpdDsKLX0K
LQogI3Jlc3VsdHMtdGFibGVzIHRkLm5vaXN5LXJlc3VsdHMgewogICAgIGNvbG9yOiByZ2IoMjU1
LCAxMDQsIDEwNCk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwppbmRleCA0OGQ1
MjNhLi44NzQ2NDMyIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVz
b3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanMKQEAgLTM0Niwx
NCArMzQ2LDIwIEBAIFV0aWxpdGllcy5leHRlbmRPYmplY3Qod2luZG93LmJlbmNobWFya0NvbnRy
b2xsZXIsIHsKICAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnBvcHVsYXRlVGFibGUoInJlc3VsdHMt
aGVhZGVyIiwgSGVhZGVycy50ZXN0TmFtZSwgZGF0YSk7CiAgICAgICAgIHNlY3Rpb25zTWFuYWdl
ci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLXNjb3JlIiwgSGVhZGVycy5zY29yZSwgZGF0YSk7CiAg
ICAgICAgIHNlY3Rpb25zTWFuYWdlci5wb3B1bGF0ZVRhYmxlKCJyZXN1bHRzLWRhdGEiLCBIZWFk
ZXJzLmRldGFpbHMsIGRhdGEpOworICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24o
InJlc3VsdHMiLCB0cnVlKTsKKworICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3Rv
cmFnZUZyb21KU09OKGRhdGFbMF0pOworICAgIH0sCisKKyAgICBzaG93SlNPTlJlc3VsdHM6IGZ1
bmN0aW9uKCkKKyAgICB7CiAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNyZXN1bHRz
LWpzb24gdGV4dGFyZWEiKS50ZXh0Q29udGVudCA9IEpTT04uc3RyaW5naWZ5KGJlbmNobWFya1J1
bm5lckNsaWVudC5yZXN1bHRzLmRhdGEsIGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsKICAgICAgICAg
ICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gIm51bWJlciIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLnRvRml4ZWQoMik7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0p
OwotICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInJlc3VsdHMiLCB0cnVlKTsK
LQotICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUxvY2FsU3RvcmFnZUZyb21KU09OKGRhdGFb
MF0pOworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1qc29uIGJ1dHRv
biIpLnJlbW92ZSgpOworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcmVzdWx0cy1q
c29uIGRpdiIpLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwogICAgIH0sCiAKICAgICBzaG93
VGVzdEdyYXBoOiBmdW5jdGlvbih0ZXN0TmFtZSwgc2NvcmUsIG1lYW4sIGF4ZXMsIHNhbXBsZXMs
IHNhbXBsaW5nVGltZU9mZnNldCkKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGRjZmE2MS4uZDJjNTk3NCAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzMCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFByb2R1Y2luZyB0aGUgSlNPTiBjYW4gdGFrZSBhIHdo
aWxlIHdpdGggYWxsIG9mIHRoZSBkYXRhLiBNYWtlIGl0IG9uLWRlbWFuZCB3aXRoIGEKKyAgICAg
ICAgYnV0dG9uLgorCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2FuaW1vbWV0ZXIuanM6CisgICAgICAgIChzaG93UmVzdWx0cyk6IFdoZW4gc2hvd2luZyB0aGUg
cmVzdWx0cywgZG9uJ3Qgc2VyaWFsaXplIHRoZSBKU09OIGRhdGEuIE1vdmUgdGhhdCB0by4uLgor
ICAgICAgICAoc2hvd0pTT05SZXN1bHRzKTogLi4uaGVyZS4gUmVtb3ZlIHRoZSBidXR0b24uCisK
KyAgICAgICAgKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBBZGQgYSBidXR0b24uIFRoZSBi
dXR0b24gd2lsbCByZW1vdmUgaXRzZWxmIGFuZCBwb3B1bGF0ZQorICAgICAgICB0aGUgdGV4dGFy
ZWEgd2l0aCB0aGUgSlNPTiBkYXRhLgorICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2Rl
YnVnLXJ1bm5lci9hbmltb21ldGVyLmNzczoKKyAgICAgICAgKC5oaWRkZW4pOiBBZGQgYSB1bml2
ZXJzYWwgaGlkZGVuIGNsYXNzLgorICAgICAgICAoI3Jlc3VsdHMgYnV0dG9uLnNtYWxsLWJ1dHRv
bik6IFByb21vdGUgdGhlIHNtYWxsLWJ1dHRvbiBzdHlsZXMgdG8gdGhlIHdob2xlIHJlc3VsdHMK
KyAgICAgICAgc2VjdGlvbiBmb3IgdXNlIGluIHRoZSBKU09OIGJ1dHRvbi4KKyAgICAgICAgKCNy
ZXN1bHRzIGJ1dHRvbi5zbWFsbC1idXR0b246YWN0aXZlKToKKyAgICAgICAgKCNyZXN1bHRzLWRh
dGEgYnV0dG9uLnNtYWxsLWJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgICgjcmVzdWx0cy1kYXRh
IGJ1dHRvbi5zbWFsbC1idXR0b246YWN0aXZlKTogRGVsZXRlZC4KKworMjAxNi0wMS0wMyAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIGRhdGEgcmVwb3J0aW5n
IGFuZCBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUyNjcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAg
ICAgICAgUmVmYWN0b3IgaG93IEFuaW1hdG9yIGRvZXMgaXRzIHJlY29yZGluZy4KIAogICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanM6IENyZWF0ZSBhIG5ldywgc2lt
cGxlIGVzdGltYXRvciB0aGF0IGp1c3QgcmV0dXJucwotLSAKMi41LjQgKEFwcGxlIEdpdC02MSkK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268169</attachid>
            <date>2016-01-03 18:11:34 -0800</date>
            <delta_ts>2016-01-03 18:11:34 -0800</delta_ts>
            <desc>4. Show new graph data.</desc>
            <filename>0004-Update-data-reporting-and-analysis.patch</filename>
            <type>text/plain</type>
            <size>29970</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">RnJvbSA5ZTEwY2QzNjdkMTMyZTE0ZDc1ZTdkMTljOTBkNDc5ZmI0ODVjNDUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb24gTGVlIDxqb25sZWVAYXBwbGUuY29tPgpEYXRlOiBTdW4s
IDMgSmFuIDIwMTYgMTc6NTU6NDUgLTA4MDAKU3ViamVjdDogW1BBVENIIDQvNF0gVXBkYXRlIGRh
dGEgcmVwb3J0aW5nIGFuZCBhbmFseXNpcwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjY3MAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpTaG93IG5ldyBn
cmFwaCBkYXRhLiBQcm92aWRlIGNvbnRyb2xzIHRvIHNob3cgZGlmZmVyZW50IHNlcmllcyBkYXRh
LiBQcm92aWRlIGFuCmludGVyYWN0aXZlIGN1cnNvciB0aGF0IHNob3dzIHRoZSBkYXRhIGF0IGEg
Z2l2ZW4gc2FtcGxlLgoKKiBBbmltb21ldGVyL2RldmVsb3Blci5odG1sOiBBZGQgYSBuYXYgc2Vj
dGlvbiBpbiAjcmVzdWx0cy4gRWFjaCBwYXJ0IG9mIHRoZSBncmFwaApoYXMgYSBjaGVja2JveCBm
b3IgdmlzdWFsIHRvZ2dsaW5nLCBhcyB3ZWxsIGFzIGNvbXBhbmlvbiBzcGFucyB0byBjb250YWlu
IHRoZSBkYXRhLgogICAgICAgIFRoZSBudW1iZXJzIHdpbGwgYWx3YXlzIGJlIHNob3duIGV2ZW4g
aWYgdGhlIFNWRyBpc24ndC4KKiBBbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5p
bW9tZXRlci5jc3M6Cigjc3VpdGVzKTogQWRqdXN0IHNwYWNpbmcgd2hlbiBkb2luZyBmaXhlZCBj
b21wbGV4aXR5LgooI3Rlc3QtZ3JhcGggbmF2KTogUGxhY2UgdGhlIG5hdiBpbiB0aGUgdXBwZXIg
cmlnaHQgY29ybmVyLgooI3Rlc3QtZ3JhcGgtZGF0YSA+IHN2Zyk6IEZpeCB0aGUgRlBTIHNjYWxl
IGZyb20gMC02MC4gSXQgbWFrZXMgdGhlIHJhdyBGUFMgZ29lcyBwYXN0CnRoYXQgc2NhbGUuIEFs
bG93IGl0IHRvIHNob3cuCigudGFyZ2V0LWZwcyk6IEFkZCBhIGRvdHRlZCBsaW5lIGZvciB3aGVy
ZSB0aGUgYmVuY2htYXJrIGlzIHN1cHBvc2VkIHRvIHNldHRsZSBmb3IgRlBTLgooI2N1cnNvciBs
aW5lKTogVGhlIGN1cnNvciBjb250YWlucyBhIGxpbmUgYW5kIGhpZ2hsaWdodCBjaXJjbGVzIGZv
ciB0aGUgZGF0YSBiZWluZyBzaG93bi4KKCNjdXJzb3IgY2lyY2xlKToKKCNjb21wbGV4aXR5IHBh
dGgpOiBUaGlzIGFuZCBydWxlcyBhZnRlcndhcmQgYXJlIG5hbWVkIGJ5IHNlcmllcyB0eXBlLgoo
I2NvbXBsZXhpdHkgY2lyY2xlKToKKCNmaWx0ZXJlZEZQUyBwYXRoKToKKCNmaWx0ZXJlZEZQUyBj
aXJjbGUpOgooI3Jhd0ZQUyBwYXRoKToKKCNpbnRlcnZhbEZQUyBjaXJjbGUpOgooLmxlZnQtc2Ft
cGxlcyk6IERlbGV0ZWQuCigucmlnaHQtc2FtcGxlcyk6IERlbGV0ZWQuCiogQW5pbW9tZXRlci9y
ZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuanM6Cihpbml0aWFsaXplKTogQWRkIGEg
ImNoYW5nZWQiIGxpc3RlbmVyIHdoZW4gdGhlIGNoZWNrYm94ZXMgY2hhbmdlIGluIHRoZSBuYXYu
CihvbkJlbmNobWFya09wdGlvbnNDaGFuZ2VkKTogUmVuYW1lZC4KKHNob3dUZXN0R3JhcGgpOiBB
bGwgZ3JhcGggZGF0YSBpcyBwYXNzZWQgaW4gYXMgZ3JhcGhEYXRhIGluc3RlYWQgb2YgYXMgYXJn
dW1lbnRzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qczogRXh0
ZW5kIEJlbmNobWFya0NvbnRyb2xsZXIuIFdoZW4gc2hvd2luZwphIG5ldyBncmFwaCwgY2FsbCB1
cGRhdGVHcmFwaERhdGEoKS4gSXQgY3JlYXRlcyBhbGwgb2YgdGhlIGQzIGdyYXBocy4gb25HcmFw
aE9wdGlvbnNDaGFuZ2VkKCkKdG9nZ2xlcyB0aGUgZGF0YSBvbiBhbmQgb2ZmLgoodXBkYXRlR3Jh
cGhEYXRhKTogQWRkIHRoZSBheGVzLiBBZGQgdGhlIGF2ZXJhZ2UgbGluZXMgYW5kIG1hcmtlcnMg
Zm9yIHNhbXBsZSB0aW1lIGFuZAp0YXJnZXQgRlBTLiBBZGQgdGhlIGN1cnNvciBncm91cC4gVXNl
IGhlbHBlciBmdW5jdGlvbiBhZGREYXRhKCkgdG8gYWRkIHRoZSBkYXRhLiBPbiB0b3Agb2YKZXZl
cnl0aGluZyBhZGQgYSB0cmFuc3BhcmVudCBhcmVhIHdoaWNoIHdpbGwgY2F0Y2ggYWxsIG9mIHRo
ZSBtb3VzZSBldmVudHMuIFdoZW4gdGhlIG1vdXNlCm1vdmVzIGluIHRoZSBncmFwaCwgZmluZCB0
aGUgY2xvc2VzdCBkYXRhIHBvaW50LCBzaG93IHRoZSBkYXRhIGluIHRoZSBuYXYgYXJlYSwgYW5k
IGhpZ2hsaWdodAp0aGUgZGF0YSBwb2ludHMuCihhZGREYXRhKTogQWRkcyBhIGxpbmUgYW5kIGNp
cmNsZSBmb3IgZWFjaCBkYXRhIHBvaW50LiBBbHNvIGFkZHMgYSBoaWdobGlnaHQgY3Vyc29yIHdp
dGggYQpzaXplIGEgbGl0dGxlIGxhcmdlciB0aGFuIHRoZSBjaXJjbGUgcmFkaXVzIGZvciB0aGUg
ZGF0YSBwb2ludHMuCihvbkdyYXBoT3B0aW9uc0NoYW5nZWQpOiBDYWxsZWQgd2hlbiBkYXRhIGlz
IHZpc3VhbGx5IHRvZ2dsZWQuCihzaG93T3JIaWRlTm9kZXMpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
dG9nZ2xlIHRoZSAuaGlkZGVuIGNsYXNzLgoqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lv
bnMuanM6CihSZXN1bHRzRGFzaGJvYXJkLnByb3RvdHlwZS5nZXQgZGF0YSk6IEdldCByaWQgb2Yg
dGhlIGFyZ3VtZW50cyBmb3IgX3Byb2Nlc3NEYXRhLgooUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5f
YWRkR3JhcGhCdXR0b24pOiBTaG92ZSBhbGwgb2YgdGhlIGdyYXBoIGRhdGEgaW50byBhIHNpbmd1
bGFyIG9iamVjdC4KLS0tCiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2ZWxvcGVyLmh0
bWwgICAgICAgICB8ICAxNyArCiAuLi4vcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVy
LmNzcyAgICAgICAgICB8ICA4NyArKysrLQogLi4uL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5p
bW9tZXRlci5qcyAgICAgICAgICAgfCAgIDkgKy0KIC4uLi9Bbmltb21ldGVyL3Jlc291cmNlcy9k
ZWJ1Zy1ydW5uZXIvZ3JhcGguanMgICAgIHwgMzg4ICsrKysrKysrKysrKystLS0tLS0tLQogLi4u
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgICAgICAgICAgICAgfCAgMjEgKy0K
IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5
ICsrKwogNiBmaWxlcyBjaGFuZ2VkLCA0MTEgaW5zZXJ0aW9ucygrKSwgMTYwIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRt
bCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbAppbmRleCBmNmYz
MTUyLi4yMDAxNmZhIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvZGV2
ZWxvcGVyLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL2RldmVsb3Blci5o
dG1sCkBAIC05Miw2ICs5MiwyMyBAQAogICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0i
YmVuY2htYXJrQ29udHJvbGxlci5zaG93UmVzdWx0cygpIj4mbHQ7IFJlc3VsdHM8L2J1dHRvbj4K
ICAgICAgICAgICAgICAgICA8aDE+R3JhcGg6PC9oMT4KICAgICAgICAgICAgIDwvaGVhZGVyPgor
ICAgICAgICAgICAgPG5hdj4KKyAgICAgICAgICAgICAgICA8Zm9ybSBuYW1lPSJncmFwaC1vcHRp
b25zIj4KKyAgICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im1hcmtlcnMiIGNoZWNrZWQ+
IE1hcmtlcnM8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnRpbWU6
IDxzcGFuIGNsYXNzPSJ0aW1lIj48L3NwYW4+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYXZlcmFnZXMi
IGNoZWNrZWQ+IEF2ZXJhZ2VzPC9sYWJlbD48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAg
PGxpPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImNvbXBsZXhpdHkiIGNoZWNr
ZWQ+IENvbXBsZXhpdHk8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFu
IGNsYXNzPSJjb21wbGV4aXR5Ij48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAg
IDxsaT48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyYXdGUFMiPiBSYXcgRlBT
PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icmF3RlBT
Ij48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48bGFiZWw+PGlucHV0
IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWx0ZXJlZEZQUyIgY2hlY2tlZD4gRmlsdGVyZWQgRlBT
PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsdGVy
ZWRGUFMiPjwvc3Bhbj48L2xpPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxsYWJlbD48
aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImludGVydmFsRlBTIj4gQXZlcmFnZSBGUFMgcGVy
IHNhbXBsZSBpbnRlcnZhbDwvbGFiZWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4gY2xhc3M9ImludGVydmFsRlBTIj48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgICAg
PC91bD4KKyAgICAgICAgICAgICAgICA8L2Zvcm0+CisgICAgICAgICAgICA8L25hdj4KICAgICAg
ICAgICAgIDxwIGNsYXNzPSJzY29yZSI+PC9wPgogICAgICAgICAgICAgPHAgY2xhc3M9Im1lYW4i
PjwvcD4KICAgICAgICAgICAgIDxkaXYgaWQ9InRlc3QtZ3JhcGgtZGF0YSI+PC9kaXY+CmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5l
ci9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMv
ZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCmluZGV4IDQ3MWRlNTYuLmJlMDU0ODcgMTAwNjQ0
Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVy
L2FuaW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzCkBAIC0xNDMsNiArMTQzLDcgQEAgbGFiZWwu
dHJlZS1sYWJlbCB7CiAKICNzdWl0ZXMgewogICAgIHBhZGRpbmctbGVmdDogMTV2dzsKKyAgICBw
YWRkaW5nLXJpZ2h0OiAyZW07CiAgICAgZmxleDogMCAxIDQwJTsKIH0KIApAQCAtMTUzLDcgKzE1
NCw3IEBAIGxhYmVsLnRyZWUtbGFiZWwgewogI2ludHJvIGlucHV0W3R5cGU9Im51bWJlciJdIHsK
ICAgICB3aWR0aDogNTBweDsKIH0KLSAKKwogI3N1aXRlcyBpbnB1dFt0eXBlPSJudW1iZXIiXSB7
CiAgICAgZGlzcGxheTogbm9uZTsKICAgICBmbG9hdDogcmlnaHQ7CkBAIC0zNTAsNiArMzUxLDM2
IEBAIGxhYmVsLnRyZWUtbGFiZWwgewogICAgIGFsaWduLXNlbGY6IHN0cmV0Y2g7CiB9CiAKKyN0
ZXN0LWdyYXBoIG5hdiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMS41ZW07
CisgICAgcmlnaHQ6IDA7CisgICAgZm9udC1zaXplOiAuOGVtOworICAgIHdpZHRoOiAyNSU7Cit9
CisKKyN0ZXN0LWdyYXBoIG5hdiB1bCB7CisgICAgbWFyZ2luOiAwIDMwcHggMCAwOworICAgIHBh
ZGRpbmc6IDA7CisgICAgbGlzdC1zdHlsZTogbm9uZTsKK30KKworI3Rlc3QtZ3JhcGggbmF2IHVs
IHVsIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDJlbTsKK30KKworI3Rlc3QtZ3JhcGggbmF2IGxpIHsK
KyAgICBwYWRkaW5nOiAuMWVtIDA7Cit9CisKKyN0ZXN0LWdyYXBoIG5hdiBsaSA+IHNwYW4gewor
ICAgIGZsb2F0OiByaWdodDsKK30KKworI3Rlc3QtZ3JhcGggbmF2LmhpZGUtZGF0YSBzcGFuIHsK
KyAgICBkaXNwbGF5OiBub25lOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHcmFwaCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zNjEsNiArMzky
LDcgQEAgbGFiZWwudHJlZS1sYWJlbCB7CiAKICN0ZXN0LWdyYXBoLWRhdGEgPiBzdmcgewogICAg
IGZpbGw6IG5vbmU7CisgICAgb3ZlcmZsb3c6IHZpc2libGU7CiB9CiAKIC5heGlzIHBhdGgsCkBA
IC0zNzAsMTYgKzQwMiw2IEBAIGxhYmVsLnRyZWUtbGFiZWwgewogICAgIHNoYXBlLXJlbmRlcmlu
ZzogY3Jpc3BFZGdlczsKIH0KIAotLmxlZnQtc2FtcGxlcyB7Ci0gICAgc3Ryb2tlOiAjN0FERDQ5
OwotICAgIHN0cm9rZS13aWR0aDogMS41cHg7Ci19Ci0KLS5yaWdodC1zYW1wbGVzIHsKLSAgICBz
dHJva2U6ICNGQTQ5MjU7Ci0gICAgc3Ryb2tlLXdpZHRoOiAxLjVweDsKLX0KLQogLnNhbXBsZS10
aW1lIHsKICAgICBzdHJva2U6ICM1NDkzRDY7CiB9CkBAIC0zODksNyArNDExLDUwIEBAIGxhYmVs
LnRyZWUtbGFiZWwgewogICAgIG9wYWNpdHk6IC44OwogfQogCisudGFyZ2V0LWZwcyB7CisgICAg
c3Ryb2tlOiByZ2JhKDI1MCwgNzMsIDM3LCAuNCk7CisgICAgc3Ryb2tlLXdpZHRoOiAxcHg7Cisg
ICAgc3Ryb2tlLWRhc2hhcnJheTogMTAsIDEwOworfQorCiAucmlnaHQtbWVhbiB7CiAgICAgc3Ry
b2tlOiAjRkE0OTI1OwogICAgIG9wYWNpdHk6IC44OwogfQorCisjY3Vyc29yIGxpbmUgeworICAg
IHN0cm9rZTogcmdiKDI1MCwgMjUwLCAyNTApOworICAgIHN0cm9rZS13aWR0aDogMXB4OworfQor
CisjY3Vyc29yIGNpcmNsZSB7CisgICAgZmlsbDogcmdiKDI1MCwgMjUwLCAyNTApOworfQorCisj
Y29tcGxleGl0eSBwYXRoIHsKKyAgICBzdHJva2U6IHJnYmEoMTIyLCAyMjEsIDczLCAuNyk7Cisg
ICAgc3Ryb2tlLXdpZHRoOiAycHg7Cit9CisKKyNjb21wbGV4aXR5IGNpcmNsZSB7CisgICAgZmls
bDogcmdiKDEyMiwgMjIxLCA3Myk7Cit9CisKKyNmaWx0ZXJlZEZQUyBwYXRoIHsKKyAgICBzdHJv
a2U6IHJnYmEoMjUwLCA3MywgMzcsIC43KTsKKyAgICBzdHJva2Utd2lkdGg6IDJweDsKK30KKwor
I2ZpbHRlcmVkRlBTIGNpcmNsZSB7CisgICAgZmlsbDogcmdiKDI1MCwgNzMsIDM3KTsKK30KKwor
I3Jhd0ZQUyBwYXRoIHsKKyAgICBzdHJva2U6IHJnYmEoMjUwLCA3MywgMzcsIC43KTsKKyAgICBz
dHJva2Utd2lkdGg6IDFweDsKK30KKworI3Jhd0ZQUyBjaXJjbGUsCisjaW50ZXJ2YWxGUFMgY2ly
Y2xlIHsKKyAgICBmaWxsOiByZ2IoMjUwLCA3MywgMzcpOworfQpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5q
cyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2Fu
aW1vbWV0ZXIuanMKaW5kZXggODc0NjQzMi4uNjA1YmIzOCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvYW5pbW9tZXRlci5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9h
bmltb21ldGVyLmpzCkBAIC0zMDgsNyArMzA4LDggQEAgd2luZG93LnN1aXRlc01hbmFnZXIgPQog
VXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAg
IGluaXRpYWxpemU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGRvY3VtZW50LmZvcm1zWyJi
ZW5jaG1hcmstb3B0aW9ucyJdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGJlbmNobWFya0Nv
bnRyb2xsZXIub25Gb3JtQ2hhbmdlZCwgdHJ1ZSk7CisgICAgICAgIGRvY3VtZW50LmZvcm1zWyJi
ZW5jaG1hcmstb3B0aW9ucyJdLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGJlbmNobWFya0Nv
bnRyb2xsZXIub25CZW5jaG1hcmtPcHRpb25zQ2hhbmdlZCwgdHJ1ZSk7CisgICAgICAgIGRvY3Vt
ZW50LmZvcm1zWyJncmFwaC1vcHRpb25zIl0uYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgYmVu
Y2htYXJrQ29udHJvbGxlci5vbkdyYXBoT3B0aW9uc0NoYW5nZWQsIHRydWUpOwogICAgICAgICBv
cHRpb25zTWFuYWdlci51cGRhdGVVSUZyb21Mb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgc3VpdGVz
TWFuYWdlci5jcmVhdGVFbGVtZW50cygpOwogICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZVVJ
RnJvbUxvY2FsU3RvcmFnZSgpOwpAQCAtMzE2LDcgKzMxNyw3IEBAIFV0aWxpdGllcy5leHRlbmRP
YmplY3Qod2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIsIHsKICAgICAgICAgc3VpdGVzTWFuYWdl
ci51cGRhdGVFZGl0c0VsZW1lbnRzU3RhdGUoKTsKICAgICB9LAogCi0gICAgb25Gb3JtQ2hhbmdl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgb25CZW5jaG1hcmtPcHRpb25zQ2hhbmdlZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5hbWUgPT0gImFkanVz
dG1lbnQiKSB7CiAgICAgICAgICAgICBzdWl0ZXNNYW5hZ2VyLnVwZGF0ZUVkaXRzRWxlbWVudHNT
dGF0ZSgpOwpAQCAtMzYyLDEyICszNjMsMTIgQEAgVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5k
b3cuYmVuY2htYXJrQ29udHJvbGxlciwgewogICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCIjcmVzdWx0cy1qc29uIGRpdiIpLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwogICAgIH0s
CiAKLSAgICBzaG93VGVzdEdyYXBoOiBmdW5jdGlvbih0ZXN0TmFtZSwgc2NvcmUsIG1lYW4sIGF4
ZXMsIHNhbXBsZXMsIHNhbXBsaW5nVGltZU9mZnNldCkKKyAgICBzaG93VGVzdEdyYXBoOiBmdW5j
dGlvbih0ZXN0TmFtZSwgc2NvcmUsIG1lYW4sIGdyYXBoRGF0YSkKICAgICB7CiAgICAgICAgIHNl
Y3Rpb25zTWFuYWdlci5zZXRTZWN0aW9uSGVhZGVyKCJ0ZXN0LWdyYXBoIiwgdGVzdE5hbWUpOwog
ICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2V0U2VjdGlvblNjb3JlKCJ0ZXN0LWdyYXBoIiwgc2Nv
cmUsIG1lYW4pOwogICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd1NlY3Rpb24oInRlc3QtZ3Jh
cGgiLCB0cnVlKTsKLSAgICAgICAgZ3JhcGgoIiN0ZXN0LWdyYXBoLWRhdGEiLCBuZXcgSW5zZXRz
KDEwLCAyMCwgMzAsIDQwKSwgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KTsKKyAg
ICAgICAgdGhpcy51cGRhdGVHcmFwaERhdGEoZ3JhcGhEYXRhKTsKICAgICB9CiB9KTsKIApkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5u
ZXIvZ3JhcGguanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVn
LXJ1bm5lci9ncmFwaC5qcwppbmRleCAwMjFmNWY1Li5jMmZhMDNkIDEwMDY0NAotLS0gYS9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9ncmFwaC5qcwor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9n
cmFwaC5qcwpAQCAtMSwxNDIgKzEsMjUyIEBACi1mdW5jdGlvbiBncmFwaChzZWxlY3RvciwgbWFy
Z2lucywgYXhlcywgc2FtcGxlcywgc2FtcGxpbmdUaW1lT2Zmc2V0KQotewotICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7Ci0gICAgZWxlbWVudC5pbm5l
ckhUTUwgPSAnJzsKLQotICAgIHZhciBzaXplID0gUG9pbnQuZWxlbWVudENsaWVudFNpemUoZWxl
bWVudCkuc3VidHJhY3QobWFyZ2lucy5zaXplKTsKLQotICAgIHZhciB4ID0gZDMuc2NhbGUubGlu
ZWFyKCkKLSAgICAgICAgICAgIC5yYW5nZShbMCwgc2l6ZS53aWR0aF0pCi0gICAgICAgICAgICAu
ZG9tYWluKGQzLmV4dGVudChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnRpbWVPZmZz
ZXQ7IH0pKTsgICAgICAgICAgICAKLQotICAgIHZhciB5TGVmdCA9IGQzLnNjYWxlLmxpbmVhcigp
Ci0gICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0LCAwXSkKLSAgICAgICAgICAgIC5kb21h
aW4oWzAsIGQzLm1heChzYW1wbGVzLCBmdW5jdGlvbihkKSB7IHJldHVybiBkLnZhbHVlc1swXTsg
fSldKTsKLQotICAgIHZhciB5UmlnaHQgPSBkMy5zY2FsZS5saW5lYXIoKQotICAgICAgICAgICAg
LnJhbmdlKFtzaXplLmhlaWdodCwgMF0pCi0gICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgo
c2FtcGxlcywgZnVuY3Rpb24oZCkgeyByZXR1cm4gZC52YWx1ZXNbMV07IH0pXSk7Ci0KLSAgICB2
YXIgeEF4aXMgPSBkMy5zdmcuYXhpcygpCi0gICAgICAgICAgICAuc2NhbGUoeCkKLSAgICAgICAg
ICAgIC5vcmllbnQoImJvdHRvbSIpOwotCi0gICAgdmFyIHlBeGlzTGVmdCA9IGQzLnN2Zy5heGlz
KCkKLSAgICAgICAgICAgIC5zY2FsZSh5TGVmdCkKLSAgICAgICAgICAgIC5vcmllbnQoImxlZnQi
KTsKLQotICAgIHZhciB5QXhpc1JpZ2h0ID0gZDMuc3ZnLmF4aXMoKQotICAgICAgICAgICAgLnNj
YWxlKHlSaWdodCkKLSAgICAgICAgICAgIC5vcmllbnQoInJpZ2h0Iik7Ci0KLSAgICB2YXIgbGlu
ZUxlZnQgPSBkMy5zdmcubGluZSgpCi0gICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVy
biB4KGQudGltZU9mZnNldCk7IH0pCi0gICAgICAgICAgICAueShmdW5jdGlvbihkKSB7IHJldHVy
biB5TGVmdChkLnZhbHVlc1swXSk7IH0pOwotCi0gICAgdmFyIGxpbmVSaWdodCA9IGQzLnN2Zy5s
aW5lKCkKLSAgICAgICAgICAgIC54KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHgoZC50aW1lT2Zmc2V0
KTsgfSkKLSAgICAgICAgICAgIC55KGZ1bmN0aW9uKGQpIHsgcmV0dXJuIHlSaWdodChkLnZhbHVl
c1sxXSk7IH0pOwotCi0gICAgc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpIHsKLSAgICAgICAg
ZC50aW1lT2Zmc2V0ID0gK2QudGltZU9mZnNldDsKLSAgICAgICAgZC52YWx1ZXNbMF0gPSArZC52
YWx1ZXNbMF07Ci0gICAgICAgIGQudmFsdWVzWzFdID0gK2QudmFsdWVzWzFdOyAgICAgICAgCi0g
ICAgfSk7ICAgIAotCi0gICAgdmFyIHNhbXBsZWRTYW1wbGVzID0gc2FtcGxlcy5maWx0ZXIoZnVu
Y3Rpb24oZCkgewotICAgICAgICByZXR1cm4gZC50aW1lT2Zmc2V0ID49IHNhbXBsaW5nVGltZU9m
ZnNldDsKLSAgICB9KTsKLSAgICAKLSAgICB2YXIgbWVhbkxlZnQgPSBkMy5tZWFuKHNhbXBsZWRT
YW1wbGVzLCBmdW5jdGlvbihkKSB7Ci0gICAgICAgIHJldHVybiArZC52YWx1ZXNbMF07Ci0gICAg
fSk7Ci0KLSAgICB2YXIgbWVhblJpZ2h0ID0gZDMubWVhbihzYW1wbGVkU2FtcGxlcywgZnVuY3Rp
b24oZCkgewotICAgICAgICByZXR1cm4gK2QudmFsdWVzWzFdOwotICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAotICAgIHZhciBzdmcgPSBkMy5zZWxlY3Qoc2VsZWN0b3IpLmFw
cGVuZCgic3ZnIikKLSAgICAgICAgLmF0dHIoIndpZHRoIiwgc2l6ZS53aWR0aCArIG1hcmdpbnMu
bGVmdCArIG1hcmdpbnMucmlnaHQpCi0gICAgICAgIC5hdHRyKCJoZWlnaHQiLCBzaXplLmhlaWdo
dCArIG1hcmdpbnMudG9wICsgbWFyZ2lucy5ib3R0b20pCi0gICAgICAgIC5hcHBlbmQoImciKQot
ICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xhdGUoIiArIG1hcmdpbnMubGVm
dCArICIsIiArIG1hcmdpbnMudG9wICsgIikiKTsKLQotICAgIC8vIHgtYXhpcwotICAgIHN2Zy5h
cHBlbmQoImciKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAieCBheGlzIikKLSAgICAgICAgLmF0
dHIoImZpbGwiLCAicmdiKDIzNSwgMjM1LCAyMzUpIikKLSAgICAgICAgLmF0dHIoInRyYW5zZm9y
bSIsICJ0cmFuc2xhdGUoMCwiICsgc2l6ZS5oZWlnaHQgKyAiKSIpCi0gICAgICAgIC5jYWxsKHhB
eGlzKQotICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKLSAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJsYWJlbCIpCi0gICAgICAgICAgICAuYXR0cigieCIsIHNpemUud2lkdGgpCi0gICAgICAgICAg
ICAuYXR0cigieSIsIC02KQorVXRpbGl0aWVzLmV4dGVuZE9iamVjdCh3aW5kb3cuYmVuY2htYXJr
Q29udHJvbGxlciwgeworICAgIHVwZGF0ZUdyYXBoRGF0YTogZnVuY3Rpb24oZ3JhcGhEYXRhKQor
ICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dC1ncmFwaC1kYXRhIik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gIiI7CisgICAgICAg
IHZhciBtYXJnaW5zID0gbmV3IEluc2V0cygxMCwgMzAsIDMwLCA0MCk7CisgICAgICAgIHZhciBz
aXplID0gUG9pbnQuZWxlbWVudENsaWVudFNpemUoZWxlbWVudCkuc3VidHJhY3QobWFyZ2lucy5z
aXplKTsKKworICAgICAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KCIjdGVzdC1ncmFwaC1kYXRhIiku
YXBwZW5kKCJzdmciKQorICAgICAgICAgICAgLmF0dHIoIndpZHRoIiwgc2l6ZS53aWR0aCArIG1h
cmdpbnMubGVmdCArIG1hcmdpbnMucmlnaHQpCisgICAgICAgICAgICAuYXR0cigiaGVpZ2h0Iiwg
c2l6ZS5oZWlnaHQgKyBtYXJnaW5zLnRvcCArIG1hcmdpbnMuYm90dG9tKQorICAgICAgICAgICAg
LmFwcGVuZCgiZyIpCisgICAgICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJ0cmFuc2xh
dGUoIiArIG1hcmdpbnMubGVmdCArICIsIiArIG1hcmdpbnMudG9wICsgIikiKTsKKworICAgICAg
ICB2YXIgYXhlcyA9IGdyYXBoRGF0YS5heGVzOworICAgICAgICB2YXIgdGFyZ2V0RlBTID0gZ3Jh
cGhEYXRhLnRhcmdldEZQUzsKKworICAgICAgICAvLyBBeGlzIHNjYWxlcworICAgICAgICB2YXIg
eCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAgICAgLnJhbmdlKFswLCBzaXplLndp
ZHRoXSkKKyAgICAgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoZ3JhcGhEYXRhLnNhbXBs
ZXMsIGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMudGltZTsgfSldKTsKKyAgICAgICAgdmFyIHlMZWZ0
ID0gZDMuc2NhbGUubGluZWFyKCkKKyAgICAgICAgICAgICAgICAucmFuZ2UoW3NpemUuaGVpZ2h0
LCAwXSkKKyAgICAgICAgICAgICAgICAuZG9tYWluKFswLCBkMy5tYXgoZ3JhcGhEYXRhLnNhbXBs
ZXMsIGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMuY29tcGxleGl0eTsgfSldKTsKKyAgICAgICAgdmFy
IHlSaWdodCA9IGQzLnNjYWxlLmxpbmVhcigpCisgICAgICAgICAgICAgICAgLnJhbmdlKFtzaXpl
LmhlaWdodCwgMF0pCisgICAgICAgICAgICAgICAgLmRvbWFpbihbMCwgNjBdKTsKKworICAgICAg
ICAvLyBBeGVzCisgICAgICAgIHZhciB4QXhpcyA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAg
ICAgICAuc2NhbGUoeCkKKyAgICAgICAgICAgICAgICAub3JpZW50KCJib3R0b20iKTsKKyAgICAg
ICAgdmFyIHlBeGlzTGVmdCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgICAgICAuc2NhbGUo
eUxlZnQpCisgICAgICAgICAgICAgICAgLm9yaWVudCgibGVmdCIpOworICAgICAgICB2YXIgeUF4
aXNSaWdodCA9IGQzLnN2Zy5heGlzKCkKKyAgICAgICAgICAgICAgICAuc2NhbGUoeVJpZ2h0KQor
ICAgICAgICAgICAgICAgIC5vcmllbnQoInJpZ2h0Iik7CisKKyAgICAgICAgLy8geC1heGlzCisg
ICAgICAgIHN2Zy5hcHBlbmQoImciKQorICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgInggYXhp
cyIpCiAgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2IoMjM1LCAyMzUsIDIzNSkiKQotICAg
ICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hvciIsICJlbmQiKQotICAgICAgICAgICAgLnRleHQo
InRpbWUiKTsKLSAgICAgICAgICAgICAgICAgCi0gICAgLy8geUxlZnQtYXhpcwotICAgIHN2Zy5h
cHBlbmQoImciKQotICAgICAgICAuYXR0cigiY2xhc3MiLCAieSBheGlzIikKLSAgICAgICAgLmF0
dHIoImZpbGwiLCAiIzdBREQ0OSIpCi0gICAgICAgIC5jYWxsKHlBeGlzTGVmdCkKLSAgICAgICAg
LmFwcGVuZCgidGV4dCIpCi0gICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQotICAg
ICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3RhdGUoLTkwKSIpCi0gICAgICAgICAgICAu
YXR0cigieSIsIDYpCisgICAgICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgw
LCIgKyBzaXplLmhlaWdodCArICIpIikKKyAgICAgICAgICAgIC5jYWxsKHhBeGlzKQorICAgICAg
ICAgICAgLmFwcGVuZCgidGV4dCIpCisgICAgICAgICAgICAgICAgLmF0dHIoImNsYXNzIiwgImxh
YmVsIikKKyAgICAgICAgICAgICAgICAuYXR0cigieCIsIHNpemUud2lkdGgpCisgICAgICAgICAg
ICAgICAgLmF0dHIoInkiLCAtNikKKyAgICAgICAgICAgICAgICAuYXR0cigiZmlsbCIsICJyZ2Io
MjM1LCAyMzUsIDIzNSkiKQorICAgICAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAi
ZW5kIikKKyAgICAgICAgICAgICAgICAudGV4dCgidGltZSIpOworCisgICAgICAgIC8vIHlMZWZ0
LWF4aXMKKyAgICAgICAgc3ZnLmFwcGVuZCgiZyIpCisgICAgICAgICAgICAuYXR0cigiY2xhc3Mi
LCAieSBheGlzIikKICAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgIiM3QURENDkiKQotICAgICAg
ICAgICAgLmF0dHIoImR5IiwgIi43MWVtIikKLSAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNo
b3IiLCAiZW5kIikKLSAgICAgICAgICAgIC50ZXh0KGF4ZXNbMF0pOwotCi0gICAgLy8geVJpZ2h0
LWF4aXMKLSAgICBzdmcuYXBwZW5kKCJnIikKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInkgYXhp
cyIpCi0gICAgICAgIC5hdHRyKCJmaWxsIiwgIiNGQTQ5MjUiKQotICAgICAgICAuYXR0cigidHJh
bnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0aCArICIsIDApIikKLSAgICAgICAgLmNh
bGwoeUF4aXNSaWdodCkKLSAgICAgICAgLmFwcGVuZCgidGV4dCIpCi0gICAgICAgICAgICAuYXR0
cigiY2xhc3MiLCAibGFiZWwiKQotICAgICAgICAgICAgLmF0dHIoInRyYW5zZm9ybSIsICJyb3Rh
dGUoLTkwKSIpCi0gICAgICAgICAgICAuYXR0cigieSIsIDYpCisgICAgICAgICAgICAuY2FsbCh5
QXhpc0xlZnQpCisgICAgICAgICAgICAuYXBwZW5kKCJ0ZXh0IikKKyAgICAgICAgICAgICAgICAu
YXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgICAgIC5hdHRyKCJ0cmFuc2Zvcm0i
LCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgICAgIC5hdHRyKCJ5IiwgNikKKyAgICAgICAg
ICAgICAgICAuYXR0cigiZmlsbCIsICIjN0FERDQ5IikKKyAgICAgICAgICAgICAgICAuYXR0cigi
ZHkiLCAiLjcxZW0iKQorICAgICAgICAgICAgICAgIC5zdHlsZSgidGV4dC1hbmNob3IiLCAiZW5k
IikKKyAgICAgICAgICAgICAgICAudGV4dChheGVzWzBdKTsKKworICAgICAgICAvLyB5UmlnaHQt
YXhpcworICAgICAgICBzdmcuYXBwZW5kKCJnIikKKyAgICAgICAgICAgIC5hdHRyKCJjbGFzcyIs
ICJ5IGF4aXMiKQogICAgICAgICAgICAgLmF0dHIoImZpbGwiLCAiI0ZBNDkyNSIpCi0gICAgICAg
ICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQotICAgICAgICAgICAgLnN0eWxlKCJ0ZXh0LWFuY2hv
ciIsICJlbmQiKQotICAgICAgICAgICAgLnRleHQoYXhlc1sxXSk7Ci0KLSAgICAvLyBsZWZ0LW1l
YW4KLSAgICBzdmcuYXBwZW5kKCJzdmc6bGluZSIpCi0gICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkp
Ci0gICAgICAgIC5hdHRyKCJ4MiIsIHNpemUud2lkdGgpCi0gICAgICAgIC5hdHRyKCJ5MSIsIHlM
ZWZ0KG1lYW5MZWZ0KSkKLSAgICAgICAgLmF0dHIoInkyIiwgeUxlZnQobWVhbkxlZnQpKQotICAg
ICAgICAuYXR0cigiY2xhc3MiLCAibGVmdC1tZWFuIik7Ci0KLSAgICAvLyByaWdodC1tZWFuCi0g
ICAgc3ZnLmFwcGVuZCgic3ZnOmxpbmUiKQotICAgICAgICAuYXR0cigieDEiLCB4KDApKQotICAg
ICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQotICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQo
bWVhblJpZ2h0KSkKLSAgICAgICAgLmF0dHIoInkyIiwgeVJpZ2h0KG1lYW5SaWdodCkpCi0gICAg
ICAgIC5hdHRyKCJjbGFzcyIsICJyaWdodC1tZWFuIik7ICAgICAgICAKLQotICAgIC8vIHNhbXBs
aW5nVGltZU9mZnNldAotICAgIHN2Zy5hcHBlbmQoImxpbmUiKQotICAgICAgICAuYXR0cigieDEi
LCB4KHNhbXBsaW5nVGltZU9mZnNldCkpCi0gICAgICAgIC5hdHRyKCJ4MiIsIHgoc2FtcGxpbmdU
aW1lT2Zmc2V0KSkKLSAgICAgICAgLmF0dHIoInkxIiwgeUxlZnQoMCkpCi0gICAgICAgIC5hdHRy
KCJ5MiIsIHlMZWZ0KHlBeGlzTGVmdC5zY2FsZSgpLmRvbWFpbigpWzFdKSkKLSAgICAgICAgLmF0
dHIoImNsYXNzIiwgInNhbXBsZS10aW1lIik7Ci0KLSAgICAvLyBsZWZ0LXNhbXBsZXMKLSAgICBz
dmcuYXBwZW5kKCJwYXRoIikKLSAgICAgICAgLmRhdHVtKHNhbXBsZXMpCi0gICAgICAgIC5hdHRy
KCJjbGFzcyIsICJsZWZ0LXNhbXBsZXMiKQotICAgICAgICAuYXR0cigiZCIsIGxpbmVMZWZ0KTsK
LSAgICAgICAgCi0gICAgLy8gcmlnaHQtc2FtcGxlcwotICAgIHN2Zy5hcHBlbmQoInBhdGgiKQot
ICAgICAgICAuZGF0dW0oc2FtcGxlcykKLSAgICAgICAgLmF0dHIoImNsYXNzIiwgInJpZ2h0LXNh
bXBsZXMiKQotICAgICAgICAuYXR0cigiZCIsIGxpbmVSaWdodCk7Ci19CisgICAgICAgICAgICAu
YXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgc2l6ZS53aWR0aCArICIsIDApIikKKyAg
ICAgICAgICAgIC5jYWxsKHlBeGlzUmlnaHQpCisgICAgICAgICAgICAuYXBwZW5kKCJ0ZXh0IikK
KyAgICAgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAibGFiZWwiKQorICAgICAgICAgICAgICAg
IC5hdHRyKCJ0cmFuc2Zvcm0iLCAicm90YXRlKC05MCkiKQorICAgICAgICAgICAgICAgIC5hdHRy
KCJ5IiwgNikKKyAgICAgICAgICAgICAgICAuYXR0cigiZmlsbCIsICIjRkE0OTI1IikKKyAgICAg
ICAgICAgICAgICAuYXR0cigiZHkiLCAiLjcxZW0iKQorICAgICAgICAgICAgICAgIC5zdHlsZSgi
dGV4dC1hbmNob3IiLCAiZW5kIikKKyAgICAgICAgICAgICAgICAudGV4dChheGVzWzFdKTsKKwor
ICAgICAgICAvLyBzYW1wbGluZ1RpbWVPZmZzZXQKKyAgICAgICAgc3ZnLmFwcGVuZCgibGluZSIp
CisgICAgICAgICAgICAuYXR0cigieDEiLCB4KGdyYXBoRGF0YS5zYW1wbGluZ1RpbWVPZmZzZXQp
KQorICAgICAgICAgICAgLmF0dHIoIngyIiwgeChncmFwaERhdGEuc2FtcGxpbmdUaW1lT2Zmc2V0
KSkKKyAgICAgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAgICAgLmF0dHIo
InkyIiwgeUxlZnQoeUF4aXNMZWZ0LnNjYWxlKCkuZG9tYWluKClbMV0pKQorICAgICAgICAgICAg
LmF0dHIoImNsYXNzIiwgInNhbXBsZS10aW1lIG1hcmtlciIpOworCisgICAgICAgIC8vIGxlZnQt
bWVhbgorICAgICAgICBzdmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgICAgIC5hdHRyKCJ4MSIs
IHgoMCkpCisgICAgICAgICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQorICAgICAgICAgICAg
LmF0dHIoInkxIiwgeUxlZnQoZ3JhcGhEYXRhLm1lYW5bMF0pKQorICAgICAgICAgICAgLmF0dHIo
InkyIiwgeUxlZnQoZ3JhcGhEYXRhLm1lYW5bMF0pKQorICAgICAgICAgICAgLmF0dHIoImNsYXNz
IiwgImxlZnQtbWVhbiBtZWFuIik7CisKKyAgICAgICAgLy8gcmlnaHQtbWVhbgorICAgICAgICBz
dmcuYXBwZW5kKCJsaW5lIikKKyAgICAgICAgICAgIC5hdHRyKCJ4MSIsIHgoMCkpCisgICAgICAg
ICAgICAuYXR0cigieDIiLCBzaXplLndpZHRoKQorICAgICAgICAgICAgLmF0dHIoInkxIiwgeVJp
Z2h0KGdyYXBoRGF0YS5tZWFuWzFdKSkKKyAgICAgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChn
cmFwaERhdGEubWVhblsxXSkpCisgICAgICAgICAgICAuYXR0cigiY2xhc3MiLCAicmlnaHQtbWVh
biBtZWFuIik7CisKKyAgICAgICAgLy8gcmlnaHQtdGFyZ2V0CisgICAgICAgIGlmICh0YXJnZXRG
UFMpIHsKKyAgICAgICAgICAgIHN2Zy5hcHBlbmQoImxpbmUiKQorICAgICAgICAgICAgICAgIC5h
dHRyKCJ4MSIsIHgoMCkpCisgICAgICAgICAgICAgICAgLmF0dHIoIngyIiwgc2l6ZS53aWR0aCkK
KyAgICAgICAgICAgICAgICAuYXR0cigieTEiLCB5UmlnaHQodGFyZ2V0RlBTKSkKKyAgICAgICAg
ICAgICAgICAuYXR0cigieTIiLCB5UmlnaHQodGFyZ2V0RlBTKSkKKyAgICAgICAgICAgICAgICAu
YXR0cigiY2xhc3MiLCAidGFyZ2V0LWZwcyBtYXJrZXIiKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEN1cnNvcgorICAgICAgICB2YXIgY3Vyc29yR3JvdXAgPSBzdmcuYXBwZW5kKCJnIikuYXR0
cigiaWQiLCAiY3Vyc29yIik7CisgICAgICAgIGN1cnNvckdyb3VwLmFwcGVuZCgibGluZSIpCisg
ICAgICAgICAgICAuYXR0cigieDEiLCAwKQorICAgICAgICAgICAgLmF0dHIoIngyIiwgMCkKKyAg
ICAgICAgICAgIC5hdHRyKCJ5MSIsIHlMZWZ0KDApKQorICAgICAgICAgICAgLmF0dHIoInkyIiwg
eUxlZnQoMCkpOworCisgICAgICAgIC8vIERhdGEKKyAgICAgICAgdmFyIGFsbERhdGEgPSBncmFw
aERhdGEuc2FtcGxlczsKKyAgICAgICAgdmFyIGZpbHRlcmVkRGF0YSA9IGdyYXBoRGF0YS5zYW1w
bGVzLmZpbHRlcihmdW5jdGlvbiAoc2FtcGxlKSB7CisgICAgICAgICAgICByZXR1cm4gInNtb290
aGVkRlBTIiBpbiBzYW1wbGU7CisgICAgICAgIH0pOworCisgICAgICAgIGZ1bmN0aW9uIGFkZERh
dGEobmFtZSwgZGF0YSwgeUNvb3JkaW5hdGVDYWxsYmFjaywgcG9pbnRSYWRpdXMsIG9taXRMaW5l
KSB7CisgICAgICAgICAgICB2YXIgc3ZnR3JvdXAgPSBzdmcuYXBwZW5kKCJnIikuYXR0cigiaWQi
LCBuYW1lKTsKKyAgICAgICAgICAgIGlmICghb21pdExpbmUpIHsKKyAgICAgICAgICAgICAgICBz
dmdHcm91cC5hcHBlbmQoInBhdGgiKQorICAgICAgICAgICAgICAgICAgICAuZGF0dW0oZGF0YSkK
KyAgICAgICAgICAgICAgICAgICAgLmF0dHIoImQiLCBkMy5zdmcubGluZSgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAueChmdW5jdGlvbihkKSB7IHJldHVybiB4KGQudGltZSk7IH0pCisgICAg
ICAgICAgICAgICAgICAgICAgICAueSh5Q29vcmRpbmF0ZUNhbGxiYWNrKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBzdmdHcm91cC5zZWxlY3RBbGwoImNpcmNsZSIpCisgICAgICAgICAg
ICAgICAgLmRhdGEoZGF0YSkKKyAgICAgICAgICAgICAgICAuZW50ZXIoKQorICAgICAgICAgICAg
ICAgIC5hcHBlbmQoImNpcmNsZSIpCisgICAgICAgICAgICAgICAgLmF0dHIoImN4IiwgZnVuY3Rp
b24oZCkgeyByZXR1cm4geChkLnRpbWUpOyB9KQorICAgICAgICAgICAgICAgIC5hdHRyKCJjeSIs
IHlDb29yZGluYXRlQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgLmF0dHIoInIiLCBwb2ludFJh
ZGl1cyk7CisKKyAgICAgICAgICAgIGN1cnNvckdyb3VwLmFwcGVuZCgiY2lyY2xlIikKKyAgICAg
ICAgICAgICAgICAuYXR0cigiY2xhc3MiLCBuYW1lKQorICAgICAgICAgICAgICAgIC5hdHRyKCJy
IiwgcG9pbnRSYWRpdXMgKyAyKTsKKyAgICAgICAgfQorCisgICAgICAgIGFkZERhdGEoImNvbXBs
ZXhpdHkiLCBhbGxEYXRhLCBmdW5jdGlvbihkKSB7IHJldHVybiB5TGVmdChkLmNvbXBsZXhpdHkp
OyB9LCAyKTsKKyAgICAgICAgYWRkRGF0YSgicmF3RlBTIiwgYWxsRGF0YSwgZnVuY3Rpb24oZCkg
eyByZXR1cm4geVJpZ2h0KGQuZnBzKTsgfSwgMSk7CisgICAgICAgIGFkZERhdGEoImZpbHRlcmVk
RlBTIiwgZmlsdGVyZWREYXRhLCBmdW5jdGlvbihkKSB7IHJldHVybiB5UmlnaHQoZC5zbW9vdGhl
ZEZQUyk7IH0sIDIpOworICAgICAgICBhZGREYXRhKCJpbnRlcnZhbEZQUyIsIGZpbHRlcmVkRGF0
YSwgZnVuY3Rpb24oZCkgeyByZXR1cm4geVJpZ2h0KGQuaW50ZXJ2YWxGUFMpOyB9LCAzLCB0cnVl
KTsKKworICAgICAgICAvLyBBcmVhIHRvIGhhbmRsZSBtb3VzZSBldmVudHMKKyAgICAgICAgdmFy
IGFyZWEgPSBzdmcuYXBwZW5kKCJyZWN0IikKKyAgICAgICAgICAgIC5hdHRyKCJmaWxsIiwgInRy
YW5zcGFyZW50IikKKyAgICAgICAgICAgIC5hdHRyKCJ4IiwgMCkKKyAgICAgICAgICAgIC5hdHRy
KCJ5IiwgMCkKKyAgICAgICAgICAgIC5hdHRyKCJ3aWR0aCIsIHNpemUueCkKKyAgICAgICAgICAg
IC5hdHRyKCJoZWlnaHQiLCBzaXplLnkpOworCisgICAgICAgIHZhciB0aW1lQmlzZWN0ID0gZDMu
YmlzZWN0b3IoZnVuY3Rpb24oZCkgeyByZXR1cm4gZC50aW1lOyB9KS5yaWdodDsKKyAgICAgICAg
dmFyIHN0YXRzVG9IaWdobGlnaHQgPSBbImNvbXBsZXhpdHkiLCAicmF3RlBTIiwgImZpbHRlcmVk
RlBTIiwgImludGVydmFsRlBTIl07CisgICAgICAgIGFyZWEub24oIm1vdXNlb3ZlciIsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImN1cnNvciIpLmNs
YXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI3Rlc3QtZ3JhcGggbmF2IikuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZS1kYXRhIik7Cisg
ICAgICAgIH0pLm9uKCJtb3VzZW91dCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImN1cnNvciIpLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAg
ICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtZ3JhcGggbmF2IikuY2xhc3NM
aXN0LmFkZCgiaGlkZS1kYXRhIik7CisgICAgICAgIH0pLm9uKCJtb3VzZW1vdmUiLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQuZm9ybXNbImdyYXBoLW9wdGlv
bnMiXS5lbGVtZW50czsKKworICAgICAgICAgICAgdmFyIG14X2RvbWFpbiA9IHguaW52ZXJ0KGQz
Lm1vdXNlKHRoaXMpWzBdKTsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IE1hdGgubWluKHRpbWVC
aXNlY3QoYWxsRGF0YSwgbXhfZG9tYWluKSwgYWxsRGF0YS5sZW5ndGggLSAxKTsKKyAgICAgICAg
ICAgIHZhciBkYXRhID0gYWxsRGF0YVtpbmRleF07CisgICAgICAgICAgICB2YXIgY3Vyc29yX3gg
PSB4KGRhdGEudGltZSk7CisgICAgICAgICAgICB2YXIgY3Vyc29yX3kgPSB5QXhpc1JpZ2h0LnNj
YWxlKCkuZG9tYWluKClbMV07CisgICAgICAgICAgICBpZiAoZm9ybVsicmF3RlBTIl0uY2hlY2tl
ZCkKKyAgICAgICAgICAgICAgICBjdXJzb3JfeSA9IE1hdGgubWF4KGN1cnNvcl95LCBkYXRhLmZw
cyk7CisgICAgICAgICAgICBjdXJzb3JHcm91cC5zZWxlY3QoImxpbmUiKQorICAgICAgICAgICAg
ICAgIC5hdHRyKCJ4MSIsIGN1cnNvcl94KQorICAgICAgICAgICAgICAgIC5hdHRyKCJ4MiIsIGN1
cnNvcl94KQorICAgICAgICAgICAgICAgIC5hdHRyKCJ5MiIsIHlSaWdodChjdXJzb3JfeSkpOwor
CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC1ncmFwaCBuYXYgLnRp
bWUiKS5pbm5lclRleHQgPSBkYXRhLnRpbWUudG9GaXhlZCgzKSArICJzICgiICsgaW5kZXggKyAi
KSI7CisgICAgICAgICAgICBzdGF0c1RvSGlnaGxpZ2h0LmZvckVhY2goZnVuY3Rpb24obmFtZSkg
eworICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
I3Rlc3QtZ3JhcGggbmF2IC4iICsgbmFtZSk7CisgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQg
PSAiIjsKKyAgICAgICAgICAgICAgICB2YXIgZGF0YV95ID0gbnVsbDsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICJjb21wbGV4aXR5IjoKKyAg
ICAgICAgICAgICAgICAgICAgY29udGVudCA9IGRhdGEuY29tcGxleGl0eTsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YV95ID0geUxlZnQoZGF0YS5jb21wbGV4aXR5KTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAicmF3RlBTIjoKKyAgICAgICAgICAg
ICAgICAgICAgY29udGVudCA9IGRhdGEuZnBzLnRvRml4ZWQoMik7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGFfeSA9IHlSaWdodChkYXRhLmZwcyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgImZpbHRlcmVkRlBTIjoKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCJzbW9vdGhlZEZQUyIgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGVudCA9IGRhdGEuc21vb3RoZWRGUFMudG9GaXhlZCgyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFfeSA9IHlSaWdodChkYXRhLnNtb290aGVkRlBTKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
ICJpbnRlcnZhbEZQUyI6CisgICAgICAgICAgICAgICAgICAgIGlmICgiaW50ZXJ2YWxGUFMiIGlu
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBkYXRhLmludGVydmFs
RlBTLnRvRml4ZWQoMik7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3kgPSB5UmlnaHQo
ZGF0YS5pbnRlcnZhbEZQUyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZWxlbWVu
dC5pbm5lclRleHQgPSBjb250ZW50OworCisgICAgICAgICAgICAgICAgaWYgKGZvcm1bbmFtZV0u
Y2hlY2tlZCAmJiBkYXRhX3kgIT09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgY3Vyc29y
R3JvdXAuc2VsZWN0KCIuIiArIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigi
Y3giLCBjdXJzb3JfeCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJjeSIsIGRhdGFf
eSk7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjdXJzb3Ig
LiIgKyBuYW1lKS5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2N1cnNv
ciAuIiArIG5hbWUpLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgICAgICB0aGlzLm9uR3JhcGhPcHRpb25zQ2hhbmdlZCgpOworICAgIH0s
CisKKyAgICBvbkdyYXBoT3B0aW9uc0NoYW5nZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIg
Zm9ybSA9IGRvY3VtZW50LmZvcm1zWyJncmFwaC1vcHRpb25zIl0uZWxlbWVudHM7CisKKyAgICAg
ICAgZnVuY3Rpb24gc2hvd09ySGlkZU5vZGVzKGlzU2hvd24sIHNlbGVjdG9yKSB7CisgICAgICAg
ICAgICB2YXIgbm9kZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsK
KyAgICAgICAgICAgIGlmIChpc1Nob3duKSB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBub2RlTGlzdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgbm9kZUxp
c3RbaV0uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZUxpc3QubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgICAgIG5vZGVMaXN0W2ldLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2hvd09ySGlkZU5vZGVzKGZv
cm1bIm1hcmtlcnMiXS5jaGVja2VkLCAiLm1hcmtlciIpOworICAgICAgICBzaG93T3JIaWRlTm9k
ZXMoZm9ybVsiYXZlcmFnZXMiXS5jaGVja2VkLCAiLm1lYW4iKTsKKyAgICAgICAgc2hvd09ySGlk
ZU5vZGVzKGZvcm1bImNvbXBsZXhpdHkiXS5jaGVja2VkLCAiI2NvbXBsZXhpdHkiKTsKKyAgICAg
ICAgc2hvd09ySGlkZU5vZGVzKGZvcm1bInJhd0ZQUyJdLmNoZWNrZWQsICIjcmF3RlBTIik7Cisg
ICAgICAgIHNob3dPckhpZGVOb2Rlcyhmb3JtWyJmaWx0ZXJlZEZQUyJdLmNoZWNrZWQsICIjZmls
dGVyZWRGUFMiKTsKKyAgICAgICAgc2hvd09ySGlkZU5vZGVzKGZvcm1bImludGVydmFsRlBTIl0u
Y2hlY2tlZCwgIiNpbnRlcnZhbEZQUyIpOworICAgIH0KK30pOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCmluZGV4IDg0Y2MxZmQu
LmYzOWJjYWYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3Vy
Y2VzL2V4dGVuc2lvbnMuanMKQEAgLTI0OCw3ICsyNDgsNyBAQCBSZXN1bHRzRGFzaGJvYXJkLnBy
b3RvdHlwZSA9CiAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbnNTYW1wbGVycy5wdXNoKHN1aXRlc1Nh
bXBsZXJzKTsKICAgICB9LAogCi0gICAgX3Byb2Nlc3NEYXRhOiBmdW5jdGlvbihzdGF0aXN0aWNz
LCBncmFwaCkKKyAgICBfcHJvY2Vzc0RhdGE6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciBpdGVyYXRpb25zUmVzdWx0cyA9IFtdOwogICAgICAgICB2YXIgaXRlcmF0aW9uc1Njb3JlcyA9
IFtdOwpAQCAtMjkwLDcgKzI5MCw3IEBAIFJlc3VsdHNEYXNoYm9hcmQucHJvdG90eXBlID0KICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9wcm9jZXNzZWREYXRhKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX3Byb2Nlc3NlZERhdGE7Ci0gICAgICAgIHRoaXMuX3Byb2Nlc3NEYXRhKHRydWUsIHRy
dWUpOworICAgICAgICB0aGlzLl9wcm9jZXNzRGF0YSgpOwogICAgICAgICByZXR1cm4gdGhpcy5f
cHJvY2Vzc2VkRGF0YTsKICAgICB9LAogCkBAIC0zNDYsOSArMzQ2LDYgQEAgUmVzdWx0c1RhYmxl
LnByb3RvdHlwZSA9CiAgICAgICAgIHZhciBidXR0b24gPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVh
dGVFbGVtZW50KCJidXR0b24iLCB7IGNsYXNzOiAic21hbGwtYnV0dG9uIiB9LCB0ZCk7CiAKICAg
ICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB2YXIgc2FtcGxlcyA9IGRhdGFbU3RyaW5ncy5qc29uLmdyYXBoLnBvaW50c107Ci0g
ICAgICAgICAgICB2YXIgc2FtcGxpbmdUaW1lT2Zmc2V0ID0gZGF0YVtTdHJpbmdzLmpzb24uZ3Jh
cGguc2FtcGxpbmdUaW1lT2Zmc2V0XTsKLSAgICAgICAgICAgIHZhciBheGVzID0gW1N0cmluZ3Mu
dGV4dC5leHBlcmltZW50cy5jb21wbGV4aXR5LCBTdHJpbmdzLnRleHQuZXhwZXJpbWVudHMuZnJh
bWVSYXRlXTsKICAgICAgICAgICAgIHZhciBzY29yZSA9IHRlc3RSZXN1bHRzW1N0cmluZ3MuanNv
bi5zY29yZV0udG9GaXhlZCgyKTsKICAgICAgICAgICAgIHZhciBjb21wbGV4aXR5ID0gdGVzdFJl
c3VsdHNbU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmNvbXBsZXhpdHldOwogICAgICAgICAgICAg
dmFyIG1lYW4gPSBbCkBAIC0zNjAsNyArMzU3LDE5IEBAIFJlc3VsdHNUYWJsZS5wcm90b3R5cGUg
PQogICAgICAgICAgICAgICAgIGNvbXBsZXhpdHlbU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5w
ZXJjZW50XS50b0ZpeGVkKDIpLAogICAgICAgICAgICAgICAgICIlKSwgd29yc3QgNSU6ICIsCiAg
ICAgICAgICAgICAgICAgY29tcGxleGl0eVtTdHJpbmdzLmpzb24ubWVhc3VyZW1lbnRzLmNvbmNl
cm5dLnRvRml4ZWQoMildLmpvaW4oIiIpOwotICAgICAgICAgICAgYmVuY2htYXJrQ29udHJvbGxl
ci5zaG93VGVzdEdyYXBoKHRlc3ROYW1lLCBzY29yZSwgbWVhbiwgYXhlcywgc2FtcGxlcywgc2Ft
cGxpbmdUaW1lT2Zmc2V0KTsKKworICAgICAgICAgICAgdmFyIGdyYXBoRGF0YSA9IHsKKyAgICAg
ICAgICAgICAgICBheGVzOiBbU3RyaW5ncy50ZXh0LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHksIFN0
cmluZ3MudGV4dC5leHBlcmltZW50cy5mcmFtZVJhdGVdLAorICAgICAgICAgICAgICAgIG1lYW46
IFsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdHNbU3RyaW5ncy5qc29uLmV4cGVyaW1l
bnRzLmNvbXBsZXhpdHldW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0sCisgICAg
ICAgICAgICAgICAgICAgIHRlc3RSZXN1bHRzW1N0cmluZ3MuanNvbi5leHBlcmltZW50cy5mcmFt
ZVJhdGVdW1N0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFnZV0KKyAgICAgICAgICAgICAg
ICBdLAorICAgICAgICAgICAgICAgIHNhbXBsZXM6IGRhdGEsCisgICAgICAgICAgICAgICAgc2Ft
cGxpbmdUaW1lT2Zmc2V0OiB0ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24uc2FtcGxpbmdUaW1lT2Zm
c2V0XQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlc3RSZXN1bHRzW1N0cmluZ3Mu
anNvbi50YXJnZXRGUFNdKQorICAgICAgICAgICAgICAgIGdyYXBoRGF0YS50YXJnZXRGUFMgPSB0
ZXN0UmVzdWx0c1tTdHJpbmdzLmpzb24udGFyZ2V0RlBTXTsKKyAgICAgICAgICAgIGJlbmNobWFy
a0NvbnRyb2xsZXIuc2hvd1Rlc3RHcmFwaCh0ZXN0TmFtZSwgc2NvcmUsIG1lYW4sIGdyYXBoRGF0
YSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IFN0cmluZ3Mu
dGV4dC5yZXN1bHRzLmdyYXBoICsgIi4uLiI7CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQyYzU5NzQuLjk2
YWIwOWUgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC01LDYgKzUsNTUgQEAKIAogICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBTaG93IG5ldyBncmFwaCBkYXRhLiBQcm92
aWRlIGNvbnRyb2xzIHRvIHNob3cgZGlmZmVyZW50IHNlcmllcyBkYXRhLiBQcm92aWRlIGFuCisg
ICAgICAgIGludGVyYWN0aXZlIGN1cnNvciB0aGF0IHNob3dzIHRoZSBkYXRhIGF0IGEgZ2l2ZW4g
c2FtcGxlLgorCisgICAgICAgICogQW5pbW9tZXRlci9kZXZlbG9wZXIuaHRtbDogQWRkIGEgbmF2
IHNlY3Rpb24gaW4gI3Jlc3VsdHMuIEVhY2ggcGFydCBvZiB0aGUgZ3JhcGgKKyAgICAgICAgaGFz
IGEgY2hlY2tib3ggZm9yIHZpc3VhbCB0b2dnbGluZywgYXMgd2VsbCBhcyBjb21wYW5pb24gc3Bh
bnMgdG8gY29udGFpbiB0aGUgZGF0YS4KKyAgICAgICAgICAgICAgICBUaGUgbnVtYmVycyB3aWxs
IGFsd2F5cyBiZSBzaG93biBldmVuIGlmIHRoZSBTVkcgaXNuJ3QuCisgICAgICAgICogQW5pbW9t
ZXRlci9yZXNvdXJjZXMvZGVidWctcnVubmVyL2FuaW1vbWV0ZXIuY3NzOgorICAgICAgICAoI3N1
aXRlcyk6IEFkanVzdCBzcGFjaW5nIHdoZW4gZG9pbmcgZml4ZWQgY29tcGxleGl0eS4KKyAgICAg
ICAgKCN0ZXN0LWdyYXBoIG5hdik6IFBsYWNlIHRoZSBuYXYgaW4gdGhlIHVwcGVyIHJpZ2h0IGNv
cm5lci4KKyAgICAgICAgKCN0ZXN0LWdyYXBoLWRhdGEgPiBzdmcpOiBGaXggdGhlIEZQUyBzY2Fs
ZSBmcm9tIDAtNjAuIEl0IG1ha2VzIHRoZSByYXcgRlBTIGdvZXMgcGFzdAorICAgICAgICB0aGF0
IHNjYWxlLiBBbGxvdyBpdCB0byBzaG93LgorICAgICAgICAoLnRhcmdldC1mcHMpOiBBZGQgYSBk
b3R0ZWQgbGluZSBmb3Igd2hlcmUgdGhlIGJlbmNobWFyayBpcyBzdXBwb3NlZCB0byBzZXR0bGUg
Zm9yIEZQUy4KKyAgICAgICAgKCNjdXJzb3IgbGluZSk6IFRoZSBjdXJzb3IgY29udGFpbnMgYSBs
aW5lIGFuZCBoaWdobGlnaHQgY2lyY2xlcyBmb3IgdGhlIGRhdGEgYmVpbmcgc2hvd24uCisgICAg
ICAgICgjY3Vyc29yIGNpcmNsZSk6CisgICAgICAgICgjY29tcGxleGl0eSBwYXRoKTogVGhpcyBh
bmQgcnVsZXMgYWZ0ZXJ3YXJkIGFyZSBuYW1lZCBieSBzZXJpZXMgdHlwZS4KKyAgICAgICAgKCNj
b21wbGV4aXR5IGNpcmNsZSk6CisgICAgICAgICgjZmlsdGVyZWRGUFMgcGF0aCk6CisgICAgICAg
ICgjZmlsdGVyZWRGUFMgY2lyY2xlKToKKyAgICAgICAgKCNyYXdGUFMgcGF0aCk6CisgICAgICAg
ICgjaW50ZXJ2YWxGUFMgY2lyY2xlKToKKyAgICAgICAgKC5sZWZ0LXNhbXBsZXMpOiBEZWxldGVk
LgorICAgICAgICAoLnJpZ2h0LXNhbXBsZXMpOiBEZWxldGVkLgorICAgICAgICAqIEFuaW1vbWV0
ZXIvcmVzb3VyY2VzL2RlYnVnLXJ1bm5lci9hbmltb21ldGVyLmpzOgorICAgICAgICAoaW5pdGlh
bGl6ZSk6IEFkZCBhICJjaGFuZ2VkIiBsaXN0ZW5lciB3aGVuIHRoZSBjaGVja2JveGVzIGNoYW5n
ZSBpbiB0aGUgbmF2LgorICAgICAgICAob25CZW5jaG1hcmtPcHRpb25zQ2hhbmdlZCk6IFJlbmFt
ZWQuCisgICAgICAgIChzaG93VGVzdEdyYXBoKTogQWxsIGdyYXBoIGRhdGEgaXMgcGFzc2VkIGlu
IGFzIGdyYXBoRGF0YSBpbnN0ZWFkIG9mIGFzIGFyZ3VtZW50cy4KKyAgICAgICAgKiBBbmltb21l
dGVyL3Jlc291cmNlcy9kZWJ1Zy1ydW5uZXIvZ3JhcGguanM6IEV4dGVuZCBCZW5jaG1hcmtDb250
cm9sbGVyLiBXaGVuIHNob3dpbmcKKyAgICAgICAgYSBuZXcgZ3JhcGgsIGNhbGwgdXBkYXRlR3Jh
cGhEYXRhKCkuIEl0IGNyZWF0ZXMgYWxsIG9mIHRoZSBkMyBncmFwaHMuIG9uR3JhcGhPcHRpb25z
Q2hhbmdlZCgpCisgICAgICAgIHRvZ2dsZXMgdGhlIGRhdGEgb24gYW5kIG9mZi4KKyAgICAgICAg
KHVwZGF0ZUdyYXBoRGF0YSk6IEFkZCB0aGUgYXhlcy4gQWRkIHRoZSBhdmVyYWdlIGxpbmVzIGFu
ZCBtYXJrZXJzIGZvciBzYW1wbGUgdGltZSBhbmQKKyAgICAgICAgdGFyZ2V0IEZQUy4gQWRkIHRo
ZSBjdXJzb3IgZ3JvdXAuIFVzZSBoZWxwZXIgZnVuY3Rpb24gYWRkRGF0YSgpIHRvIGFkZCB0aGUg
ZGF0YS4gT24gdG9wIG9mCisgICAgICAgIGV2ZXJ5dGhpbmcgYWRkIGEgdHJhbnNwYXJlbnQgYXJl
YSB3aGljaCB3aWxsIGNhdGNoIGFsbCBvZiB0aGUgbW91c2UgZXZlbnRzLiBXaGVuIHRoZSBtb3Vz
ZQorICAgICAgICBtb3ZlcyBpbiB0aGUgZ3JhcGgsIGZpbmQgdGhlIGNsb3Nlc3QgZGF0YSBwb2lu
dCwgc2hvdyB0aGUgZGF0YSBpbiB0aGUgbmF2IGFyZWEsIGFuZCBoaWdobGlnaHQKKyAgICAgICAg
dGhlIGRhdGEgcG9pbnRzLgorICAgICAgICAoYWRkRGF0YSk6IEFkZHMgYSBsaW5lIGFuZCBjaXJj
bGUgZm9yIGVhY2ggZGF0YSBwb2ludC4gQWxzbyBhZGRzIGEgaGlnaGxpZ2h0IGN1cnNvciB3aXRo
IGEKKyAgICAgICAgc2l6ZSBhIGxpdHRsZSBsYXJnZXIgdGhhbiB0aGUgY2lyY2xlIHJhZGl1cyBm
b3IgdGhlIGRhdGEgcG9pbnRzLgorICAgICAgICAob25HcmFwaE9wdGlvbnNDaGFuZ2VkKTogQ2Fs
bGVkIHdoZW4gZGF0YSBpcyB2aXN1YWxseSB0b2dnbGVkLgorICAgICAgICAoc2hvd09ySGlkZU5v
ZGVzKTogSGVscGVyIGZ1bmN0aW9uIHRvIHRvZ2dsZSB0aGUgLmhpZGRlbiBjbGFzcy4KKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUmVzdWx0
c0Rhc2hib2FyZC5wcm90b3R5cGUuZ2V0IGRhdGEpOiBHZXQgcmlkIG9mIHRoZSBhcmd1bWVudHMg
Zm9yIF9wcm9jZXNzRGF0YS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX2FkZEdy
YXBoQnV0dG9uKTogU2hvdmUgYWxsIG9mIHRoZSBncmFwaCBkYXRhIGludG8gYSBzaW5ndWxhciBv
YmplY3QuCisKKzIwMTYtMDEtMDMgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAg
ICAgIFVwZGF0ZSBkYXRhIHJlcG9ydGluZyBhbmQgYW5hbHlzaXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjY3MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFByb2R1Y2luZyB0aGUgSlNPTiBjYW4gdGFr
ZSBhIHdoaWxlIHdpdGggYWxsIG9mIHRoZSBkYXRhLiBNYWtlIGl0IG9uLWRlbWFuZCB3aXRoIGEK
ICAgICAgICAgYnV0dG9uLgogCi0tIAoyLjUuNCAoQXBwbGUgR2l0LTYxKQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>